arduino esp8266 舵机控制

舵机的控制:

舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度伺服为例,那么对应的控制关系是这样的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
这只是一种参考数值,具体的参数,请参见舵机的技术参数。

 

电路连接

这里要提别注意舵机应单独供电或者使用TTL 5V供电,不可使用ESP8266的Micro USB口供电,否则舵机无法正常运行.
舵机接线说明:
棕色:GND
红色:VCC
黄色:PWM信号线

线路连接:

红线连接vv

棕色连接G

黄色连接D4

请注意我们这边用到了servo库,请下载servo库后上传运行,否则会报错。

关于servo库详情,可以看这个Arduino servo库函数说明(舵机函数库)_arduino的servo函数-CSDN博客

以下是测试代码:

复制代码
#include <Servo.h>  // 调用舵机库
Servo myservoD4;  // 定义舵机对象
void setup()
{
  myservoD4.attach(D4);  // 绑定需要控制的数字引脚对应ESP8266IO口D4
}
void loop()
{
    myservoD4.write(0);  // 控制舵机转动角度,参数是角度信息
    delay(1000);  // 延时1000毫秒
    myservoD4.write(90);
    delay(1000);  // 延时1000毫秒
      myservoD4.write(180);
    delay(1000);  // 延时1000毫秒
}
复制代码

 参考:Arduino ESP8266控制SG90舵机输出PWM信号_esp8266 pwm-CSDN博客

 

 

手动实现 PWM 控制舵机

delay() 控制频率

复制代码
void setup() {
  // put your setup code here, to run once:
  pinMode(D4, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(D4, HIGH);
  delay(2);
  digitalWrite(D4, LOW);
  delay(20 - 2);
}
复制代码

 

通过 delayMicroseconds() 手动实现频率可调的 PWM,也被称作数字IO轮转法,使用方法:

两次的digitalWrite输出状态必须相反;
可以用delay()实现毫秒级延迟,用delayMicroseconds()实现微秒级延迟。

复制代码
void setup() {
  // put your setup code here, to run once:
  pinMode(D4, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(D4, HIGH);
  delayMicroseconds(1000);
  digitalWrite(D4, LOW);
  delayMicroseconds(20000 - 1000);
  
}
复制代码

参考: 第42期《Arduino入门》善假篇 05:舵机的PWM控制原理_哔哩哔哩_bilibili

 

posted @   记录——去繁就简  阅读(1216)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示