舵机的控制:
舵机的控制一般需要一个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
标签:esp8266,舵机,void,arduino,delay,ms,D4,1000 From: https://www.cnblogs.com/lld76/p/18016435