Arduino环境下ESP8266使用Servo库驱动新西达(xxd)电调

        在嵌入式开发中,有各式各样的开发板,例如STM32、树莓派pico、arduino uno,arduino nano、ESP32、ESP8266等等。板子的选择因项目而异,在最近的项目研发中,我使用的是ESP8266的开发板,本文主要讲述如何在Arduino环境下ESP8266 使用servo库驱动新西达电调。

实现原理:

        市面上的大多数电调(电子调速器的简称)是根据pwm (脉冲宽度调制)信号进行调速的,我们通过Servo库可以让ESP8266产生pwm信号,从而控制电调。

一、arduino IDE 以及ESP8266 开发环境搭建

下载arduino IDE , 官方网址:Arduino - Home 

安装完成之后打开“首选项”-->“其他开发板管理地址”,写入以下网址

http://arduino.esp8266.com/stable/package_esp8266com_index.json

如图所示:

设置完成后,重启IDE 安装开发板

因为本人已经安装了这个开发板,所以这里会显示"移除",如果没有安装,则会显示"安装",点击后等待安装完成即可。

        Servo库属于arduino内置的库,只需要在文件中添加以下代码即可使用。

#include <Servo.h>

二、硬件连接

如下图所示

实物图,由于之前有开发板损坏,本人自行更改了开发板的连接,但引脚与上图一致。

三、程序代码

#include <Servo.h>

const int pin = 14;  //设置信号输出引脚为 GPIO 14   对应开发板D5

Servo a;  //生成电机对象

int g = 1000;  //油门

void unlock_motor() {
  //解锁电机
  a.writeMicroseconds(2000);
  delay(3000);
  a.writeMicroseconds(1000);
}

void setup() {

  pinMode(pin, OUTPUT);  //初始化GPIO引脚为输出引脚
  a.attach(pin);         //电机对象连接到输出引脚
  unlock_motor();
  Serial.begin(115200);
}

void loop() {

  if (Serial.available()) {  // 从串口输入油门
    g = Serial.parseInt();   
  }
  a.writeMicroseconds(g);
  Serial.println(g);
}

        代码中出现的unlock_motor函数我将其命名为电机解锁函数,此函数首先模拟将油门打到最大,三秒之后将油门打到最小,进行油门行程校准。这样做的目的是防止出现给一点油门电机就以最快速度运行(这一点穿越机玩家以及航模玩家应该都清楚)。

        进行油门行程校准之后。我们可以通过键盘调整油门变量g,输入数据后,writemicroseconds函数可以根据我们写入的油门大小更改PWM波形控制电调,进而控制电机速度。

        在此之前我们做过实验研究过此函数,大量实验数据表明,电机速度与油门变量g是线性关系,因此我们可以通过油门变量g来控制电机转速,达到了ESP8266使用Servo库驱动新西达(xxd)电调的效果

四、调试

        上电测试:先打开电调,后打开ESP8266

效果如下:

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y.d大仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值