本次写这篇文章是自己做一下学习记录,如有错误,还请大家斧正!!!
日后及时修正
!感谢支持!
欢迎大家的关注
点赞
收藏
留言
目录
前言
一、新建工程
二、项目函数介绍
三、代码编写
四、编译、烧录、运行
结束语
前言
舵机的控制是每一位单片机开发者、航模爱好者都喜欢的一项电子元器件,也一直被电子爱好者所喜爱。接下来我就舵机出一版关于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 ——舵机控制项目的介绍就讲到这里了,如果什么问题请再评论区留言。
接下来会陆陆续续发布一些其他的教程,敬请期待!感谢大家的支持!如有觉得这篇文章对你有所帮助的,还请点赞、收藏吧!