[求助]Arduino PPM 信号响应问题
本帖最后由 skyou82 于 2015-9-29 16:16 编辑最近在DIY4轴飞行器,我从Futaba接收器(遥控和接收,均非2.4G)引出4路PPM通道到 Mega2560的 2、3、20、21口,然后通过计算后赋值给PWM口的马达来控制转速。并通过 Serial 输出具体PWM数值,显示在串口监视器中。
现在我的问题是,即便我设置了每次loop延时20ms,但串口监视器中数据刷新的速度,目测至少有500~800ms的间隔,然后马达的动力输出也有很大的延迟!这样的延迟很难做到准确的操控,我贴上自己的代码,大家帮忙看看哪里不对。
本人Arduino 刚刚入门,请多多指教{:soso_e183:}
////- - - - My 4_Fly - - - -////
const int mPin1 = 8; //电机1
const int mPin2 = 9; //电机2
const int mPin3 = 10;//电机3
const int mPin4 = 11;//电机4
int ch1;//接收机通道1
int ch2;//接收机通道2
int ch3;//接收机通道3
int ch4;//接收机通道4
///////////////////////////////////
void setup() {
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(20, INPUT);
pinMode(21, INPUT);
pinMode(mPin1, OUTPUT);
pinMode(mPin2, OUTPUT);
pinMode(mPin3, OUTPUT);
pinMode(mPin4, OUTPUT);
Serial.begin(9600);
}
///////////////////////////////////
void loop() {
ch1 = pulseIn(2, HIGH); // 滚转
ch2 = pulseIn(3, HIGH); // 俯仰
ch3 = pulseIn(20, HIGH); // 油门
ch4 = pulseIn(21, HIGH); // 航向
int Thro = (ch3 - 900) / 3.2;
int AeroFix = ((ch1 - 900) - 400 ) / 15;
int RPM1 = Thro + AeroFix;
int RPM2 = Thro - AeroFix;
analogWrite(mPin1, RPM1);
analogWrite(mPin2, RPM2);
Serial.print(RPM1);
Serial.print(" ");
Serial.print(AeroFix);
Serial.print(" ");
Serial.println(RPM2);
delay(20);
} 是不是 plusein 耽误时间太久? 改如何解决?
页:
[1]