纪念我的无人机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油门),此为初始化
发布了2 篇原创文章 · 获赞 0 · 访问量 3822

猜你喜欢

转载自blog.csdn.net/weixin_41500452/article/details/104231717
今日推荐