基于Arduino IDE开发的ESP8266(ESP-12F)项目6 ——舵机控制

  本次写这篇文章是自己做一下学习记录,如有错误,还请大家斧正!!!

日后及时修正!感谢支持!

 欢迎大家的关注        点赞        收藏        留言


目录

前言

        一、新建工程

        二、项目函数介绍                        

        三、代码编写

        四、编译、烧录、运行

结束语


前言

        舵机的控制是每一位单片机开发者、航模爱好者都喜欢的一项电子元器件,也一直被电子爱好者所喜爱。接下来我就舵机出一版关于ESP8266控制的教程,本次使用的舵机是SG90(180°不带物理限位的)。


 一、新建工程

        首先打开Arduino IDE,点击 文件——> 点击新建,就会生成一个新的工程模板了。 (还可以点任务栏中“折了一角的书页”快速新建)。

 然后给项目重命名,然后再保存。

 这样一个新的工程就建好了。


二、项目基本函数介绍

        Arduino IDE 有其大佬写好的关于舵机的库,在这里我向大家展示的仅是个人对其的提取,也是个人觉得用得到的函数。还想继续了解这个库大家可以从Arduino 官网查询。

        Servo 含需要进行宏定义如下:

Servo sg90;

在这里我就定义了一个用舵机的sg90代替; 

1. 自命名.attach()函数

  (1)自命名.attach(pin) 函数

参数说明
pin

舵机连接到的引脚编号

 (2)自命名.attach(pin, min, max)函数

参数说明
pin

舵机连接到的引脚编号

min

脉冲宽度,以微秒为单位,对应于伺服器上的最小(0 度)角度(默认为 544)

max

脉冲宽度,以微秒为单位,对应于伺服器上的最大(180度)角度(默认为2400)

2.  自命名.write()函数        

        将值写入伺服器,相应地控制轴。在标准伺服器上,这将设置轴的角度(以度为单位),将轴移动到该方向。在连续旋转舵机上,这将设置舵机的速度(0表示一个方向的全速,180表示另一个方向的全速,接近90的值表示无运动)。

(1)自命名.write(angle)函数

参数说明
angle

写入舵机的值,从0到180

3.  自命名.writeMicroseconds()函数   

        以微秒 (us) 为单位向伺服器写入一个值,从而相应地控制轴。在标准舵机上,这将设置轴的角度。在标准舵机上,参数值 1000 完全逆时针,2000 完全顺时针,1500 在中间。请注意,一些制造商没有非常严格地遵循此标准,因此伺服器通常响应700和2300之间的值。随意增加这些端点,直到伺服器不再继续增加其范围。但请注意,尝试驱动伺服器通过其端点(通常由咆哮声表示)是一种高电流状态,应避免。连续旋转舵机将以类似于写入函数的方式响应写入微秒函数。

(1)自命名.writeMicroseconds(us)函数

4.  自命名.read()函数 

        读取伺服器的当前角度(传递给上次调用 write()的值)。

(1)自命名.read()函数

5.  自命名.attached()函数 

        检查伺服变量是否连接到销钉。

(1)自命名.attached()函数

6.  自命名.detach()函数 

        将伺服变量与其引脚分离。如果所有伺服变量都被分离,则引脚9和10可用于具有analogWrite()的PWM输出。

(1)自命名.detach()函数


 三、代码编写

        此次的项目是用按键控制舵机,开始给定舵机一个初始角度,按键按一下舵机转一定角度,当达到一定角度后回到初始角度。给出舵机的值会通过串口打印在电脑上。

        示例代码如下:

#include "Servo.h"

Servo sg90;

int angle=0,angle_1=0;

void setup() {
  // put your setup code here, to run once:
  pinMode(0,INPUT);
  
  Serial.begin(115200);
  
  while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB
      }

  sg90.attach(4);
  sg90.write(0);

}

void KEY_Init(void)
{
  if(digitalRead(0)==0)
  {
    delay(10);
    if(digitalRead(0)==0)
    {
        angle=angle+5;
        Serial.print("输入角度为:");
        Serial.println(angle);
    }
    while(digitalRead(0)==0);
  }
}

void loop() {
  // put your main code here, to run repeatedly:
  KEY_Init();
  sg90.write(angle);
  
  angle_1=sg90.read();
  if(((angle_1>=0)&&(angle_1<=180))&&((angle>=0)&&(angle<=180))!=0)
  {
    Serial.print("输出角度为:");
    Serial.println(angle_1);
  }
  else
  {
    sg90.write(0);
    angle=0;
  }
}

 四、编译、烧录、运行

        在我前一篇博文就介绍了如何编译、烧录,这里就不再过多赘述了,还望谅解!


 结束语

        关于此次基于Arduino IDE开发的ESP8266(ESP-12F)项目6 ——舵机控制项目的介绍就讲到这里了,如果什么问题请再评论区留言。

        接下来会陆陆续续发布一些其他的教程,敬请期待!感谢大家的支持!如有觉得这篇文章对你有所帮助的,还请点赞、收藏吧!


版权声明:本文为weixin_53787556原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。