Arduino 从mega 2560读取RC频道
我正在尝试使用Mega 2560读取来自fs-ct6b的信号,代码如下:Arduino 从mega 2560读取RC频道,arduino,rc,Arduino,Rc,我正在尝试使用Mega 2560读取来自fs-ct6b的信号,代码如下: int val; int ch_in[6] = {2, 3, 4, 5, 6, 7}; int ch_out[6] = {8, 9, 10, 11, 12, 13}; void setup() { for (int i = 0; i < 6; i++){ pinMode(ch_in[i], INPUT); pinMode(ch_out[i], OUTPUT); } Serial.begi
int val;
int ch_in[6] = {2, 3, 4, 5, 6, 7};
int ch_out[6] = {8, 9, 10, 11, 12, 13};
void setup() {
for (int i = 0; i < 6; i++){
pinMode(ch_in[i], INPUT);
pinMode(ch_out[i], OUTPUT);
}
Serial.begin(9600);
}
void loop() {
for (int i = 0; i < 6; i++){
val = pulseIn(ch_in[i], HIGH);
Serial.print("Ch #");
Serial.print(i + 1, DEC);
Serial.print(" = ");
Serial.println(val, DEC);
};
Serial.println("\n");
delay(100);
}
int-val;
int CHU in[6]={2,3,4,5,6,7};
int CHU out[6]={8,9,10,11,12,13};
无效设置(){
对于(int i=0;i<6;i++){
pinMode(输入[i]中的通道);
pinMode(通道输出[i],输出);
}
Serial.begin(9600);
}
void循环(){
对于(int i=0;i<6;i++){
val=脉冲星(ch_in[i],高);
连续打印(“Ch#”);
连续打印(i+1,12月);
序列号。打印(“=”);
连续打印(val,DEC);
};
Serial.println(“\n”);
延迟(100);
}
但接收到的值比我预期的要大300-400。例如,油门值在1418和2442之间变化,但连接到Mission Planner\multiwii GUI中我的quad的同一个RC给出了1100-1950。我的问题是什么?此版本的pulseIn()工作正常:
ulong pulseIn(int pin, int timeout){
ulong uStart, uEnd, _timer, _pass;
_timer = micros();
while (HIGH == digitalRead(pin)){
_pass = micros() - _timer;
if (_pass > TIME_OUT)
return 0;
};
while (LOW == digitalRead(pin)){
_pass = micros() - _timer;
if (_pass > TIME_OUT)
return 0;
};
uStart = micros();
while (HIGH == digitalRead(pin)){
_pass = micros() - _timer;
if (_pass > TIME_OUT)
return 0;
};
uEnd = micros();
return uEnd - uStart;
}
另一种方法是使用中断,如下所示:
UPD。问题出在包管理器安装的Arduino IDE版本中。arduino.cc的“原始”版本运行良好