纪念我的无人机1

实现arduino对电调的简易操控

原理:

电调需要的是一个pwm的信号,我们可以把它简单地理解为方波
而我用的是新西达的电调(次一点,但还能用)
需要的是1ms~2ms/20ms的方波信号
1ms为0油门
2ms为满油门

接上电调

1)电调三根较粗的线与电机任意连接,没有次序
2)三根较细的线为信号端,棕色(暗点的色)为负极,红色为正极,黄色为pwm信号端
3)接上电池(切勿反接,否则烧坏,切勿短路,否则爆炸)
接上电池后,提示声会变得更大声,更尖锐

第一种方法,自定义的方波

void setup(){pinMode(13,OUTPUT);Serial.begin(9600);
}void loop(){int analog = analogRead(A0);//A0处接了一个旋钮,读取值Serial.println(analog);pulse(analog);//调用脉冲函数
}void pulse(int analog){analog = map(analog,0,1025,1000,2000);//A0输入的范围为(0~1024)digitalWrite(13,HIGH);//将13作为信号输出端delayMicroseconds(analog);//这个延迟时间单位为微秒digitalWrite(13,LOW);delayMicroseconds(20000-analog);
}
//注意一定要先调到最大(满油门)再调到最小(0油门),此为初始化

第二种方法,使用自带的servo的库函数

#include<Servo.h>
Servo myservo;void setup(){Serial.begin(9600);myservo.attach(9);//注意这次信号输出要接在~9端,
}void loop(){int analog = analogRead(A0);pulse(analog);
}void pulse(int analog){analog = map(analog,0,1020,1000,2000);//1000为0度,2000为180度Serial.println(analog);//打印油门大小myservo.writeMicroseconds(analog);//使用write也可以,不过不稳定
}
//注意一定要先调到最大(满油门)再调到最小(0油门),此为初始化