skyou82 发表于 2015-9-29 16:03:38

[求助]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);

}

zoologist 发表于 2015-9-29 20:40:30

是不是 plusein 耽误时间太久?

skyou82 发表于 2015-9-29 21:31:40

改如何解决?
页: [1]
查看完整版本: [求助]Arduino PPM 信号响应问题