器具-督战
QQ: 110671958
2
类板子:
1.
1
4
路数字输入输出口:
工作电压为
3.
3V
或者
5V
,
每一路能输出和接入最大电流为
40mA
。
< br>每一路配置了
20-50K
欧姆内部上拉电阻(默认不连
接
)
。除此之外,有些引脚有特定的功能
?
?
?
?
?
串口信号
RX
(
0
号)
、
TX
(
1
号
)
:
提供
TTL
电压水平的串口接收信号,可以与
6
脚
Header
通孔相连。
外部中
断(
2
号和
3
号)
:触发中断引脚,可设成上升沿、下降沿或同时触发。
<
/p>
脉冲宽度调制
PWM
(
< br>3
、
5
、
6
、
9
、
1
0
、
11
)
:提供
6
路
8
位
PWM
输出。
SPI
(
10(SS)
,
11(MOSI)
,
12(MISO)
,
13(SCK)
)
:
SPI
通信接口。
< br>LED
(
13
号)
:
Arduino
专门用于测试
LED
的保留接口,
输出为高时点亮
LED
,
反之输出为低时
LED
p>
熄灭。
2.
6
路模拟输入
A0
到
A5
:
每一路具有
10
位的分辨率
(即输入有
1024
< br>个不同值)
,
默认输入信号范围为
0
到
5V
,
可以通过
AREF
调整输入上限。除此之外,有些引脚有特定功
能
?
TWI
接口(
SDA
A4
和
SCL A5
)
:支持通信接口(兼容
I2C
总线)
< br>。
3.
Reset
:信号为低时复位单片机芯片。
如果采用以下
10DOF
,
/?spm=&id=&_u=u1581nt87ee
GY-86 10DOF MS5611 HMC5883L
MPU6050
模块
MWC
飞控传感器模块
请打开
#define GY_86
// Chinese 10 DOF with
MPU6050 HMC5883L MS5611, LLC
(
1
)
p>
如果使用
PPM
遥控器
,
则连接
PPM
的
8
个通道
:
首先看定义
def.h
//RX PIN
assignment inside the port //for PORTD
#define THROTTLEPIN
2
#define ROLLPIN
4
#define
PITCHPIN
5
#define YAWPIN
6
#define AUX1PIN
7
#define AUX2PIN
0 // optional PIN 8 or PIN
12
#define
AUX3PIN
1 // unused
#define AUX4PIN
3 // unused
如果打算在
pro mini
上使用<
/p>
AUX2
,那么打开
#define RCAUXPIN8
或者
//#define
RCAUXPIN12
连接好
PP
M
接受芯片的
PIN
到上述
PIN.
那么数据的获取在
//
predefined PC pin block (thanks to lianj)
- Version without failsafe
#define
RX_PIN_CHECK(pin_pos, rc_value_pos)
if
(mask & PCInt_RX_Pins[pin_pos]) {
if (!(pin &
PCInt_RX_Pins[pin_pos])) {
dTime = cTime-edgeTime[pin_pos];
,
if (900
rcValue[rc_value_pos] = dTime;
}
} else edgeTime[pin_pos] = cTime;
}
ISR(RX_PC_INTERRUPT) {
….
RX_PIN_CHECK();
}
rcValue
的数值就是各个
p>
PIN
的数值。
读取流程:
loop ()
?
computeRC()
?
readRawRC
()
?
data =
rcValue[rcChannel[chan]]; / ISR(RX_PC_INTERRUPT) {
RX_PIN_CHECK();}
如果使用
PPM
在一根
PIN
上(<
/p>
PPM sum signal, on digital PIN
2
)
,则修改
config.h
#define SERIAL_SUM_PPM
具体
SUM SIGNAL
中通道顺序
需要看
PPM
接收器编码规则。
(
2
)
如果使用蓝牙串口数传及控制飞机
:
首先在
config.h
定义
#define RCSERIAL
并且不要定义
FAILSAFE
:
//#define FAILSAFE
读取流程:
Loop()
?
computeIMU()
?
annexCode()
?
serialCom()
?
c =
SerialRead(); evaluateCommand();
?
void evaluateCommand() {
switch(cmdMSP[CURRENTPORT])
{
case MSP_SET_RAW_RC:
for(uint8_t i=0;i<8;i++) {
rcData[i] =
read16();
}
headSerialReply(0);
break;
…….
}
从而得到
rcData;
在
PC
的上
位机上使用,
则发现
HOST
上位机并没有实现
MSP_SET_RAW_RC
网上有一个例子,
是用游戏手柄来
控制电脑的上位机软件,进而通过串口操作飞控。
MultiWiiConf_2_1JoyStick
/forum/?f=8&t=2302&start=20
其添加的关键代码如下:
if
((time-time5)>40 ){
time5=time;
payload = new ArrayList
(char((int)rightX % 256));
(char((int)rightX / 256));
(char((int)rightY % 256));
(char((int)rightY / 256));
(char((int)leftX % 256));
(char((int)leftX / 256));
(char((int)leftY % 256));
(char((int)leftY / 256));
(char(1500 %
256));
(char(1500 / 256));
(char(1500 % 256));
(char(1500 /
256));
(char(1500 % 256));
(char(1500 / 256));
(char(1500 %
256));
(char(1500 / 256));
sendRequestMSP(requestMSP(M
SP_SET_RAW_RC,y(new
Character[()])));
}
当然有一款安卓
APK
,也是实现了此
MSP_SET_RAW_RC
,
MultiWii EZ-GUI
/eziosoft/MultiWii_EZ_GUI
QQ: 110671958,
我简单修改了
EZ-GUI
的使用方式
及软件兼容性问题
,
有需要的联系我
.
(
3
)
如果使用有刷电机,比如空心杯电机:
引脚定义参见
:
uint8_t PWM_PIN[8] =
{3,9,11,10,6,5,A2,12};
//for a quad+: rear,right,left,front
首先在
config.h
定义
#define
EXT_MOTOR_RANGE
这样的话行程由
PPM
p>
的
[1000;2000] => PWM
的
[0;250]
。这是针对
328P
单片机的,其它型号的单
片机请自行研究更改。
关于无刷改有刷的问题:无刷信号是
1ms-2ms
脉宽的
PPM
信号,而有刷信号是
p>
0-100%
占空比
PWM
的信号
,
两者是不兼容的。
2
、一上电马达就旋转的问题:
p>
328P
的
PWM
输出脚
D9/D10/D11/D3
接下拉电阻
10k
即可。
(
4
)
p>
如果使用无刷电机,则
ESC
电子调速控制
器的连接及参数如下:
引脚定义参见
:
uint8_t
PWM_PIN[8] = {3,9,11,10,6,5,A2,12};
//for a quad+:
rear,right,left,front