实现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油门),此为初始化