发布时间: 2026-05-21
新手头一回写代码,用ESP32操控舵机时,会碰到几个典型状况:舵机不转动,角度不准确,甚至直接被烧坏。这些情形往往并非硬件出现故障,而是代码里的几个关键参数没有写妥。
最为常见的那种场景是,你手上持有一个标准的180度舵机,想要促使它从0度转向90度,之后再回转到0度。紧接着直接给出经由验证的完整代码,将其复制到 IDE便能够使用。
#
Servo ; // 创建一个舵机对象
void setup() {
.(13); // 将舵机信号线连接到
}
void loop() {
.write(0); // 转到0度
delay(1000); // 停留1秒
.write(90); // 转到90度
delay(1000); // 停留1秒
.write(180); // 转到180度
delay(1000); // 停留1秒
}
该代码达成这样的效果,即,舵机起始于0度伟创动力,每间隔1秒便逐次转动至90度继而到180度,之后转向返回,呈无限循环。
1. 舵机抖动或不动
原因:ESP32的PWM频率与舵机不匹配。
得以解决的办法是:先在前面加上频率的进行设定,在紧接着()(之前),标准的舵机通常所使用的是50Hz。
.(50);
2. 角度范围不准确
![]()
缘由在于,有一部分的舵机,其PWM脉宽所能达到的范围,并非是标准情形下的500至2500微秒。
解决的办法是,运用 () 来精准地控制脉宽,要测量出你那舵机的实际范围。
.(500); // 对应0度
.(1500); // 对应90度
.(2500); // 对应180度
3. 舵机没反应,但代码没报错
原因是,所选的GPIO引脚出现了错误情况,针对ESP32而言,存在着若干引脚或不适用于该情况,或需要进行特殊的配置操作。
推荐运用的引脚有:、、、。需规避使用 GPIO6 11这种(Flash引脚)以及GPIO0、GPIO2(与启动相关)。
| 舵机线色 | 功能 | 连接ESP32 |
|---|---|---|
| 棕色/黑色 | GND | GND |
| 红色 | VCC(电源正极) | 5V或外部电源 |
| 橙色/黄色 | 信号线 | (或其他可用引脚) |
重要警示:别拿ESP32的3.3V引脚对舵机进行供电。标准舵机供电要求为5V,要是舵机扭矩相对较大(好比超出2kg·cm),推荐采用外部5V电源,并且进行共地连接。
#
Servo ;
void setup() {
.(50); // 设置PWM频率50Hz
.(13, 500, 2500); // 绑定,设定脉宽范围
}
void loop() {
// 让舵机在0180度之间来回转动
for (int angle = 0; angle <= 180; angle += 1) {
.write(angle);
delay(15); // 每个角度停留15ms,让转动更平滑
}
for (int angle = 180; angle >= 0; angle = 1) {
.write(angle);
delay(15);
}
}
![]()
得使用库,千万别用自身所带的Servo.h,后面这个在ESP32上是会出现问题的。
一定要去设置成 (50) ,不然舵机就有可能出现抖动现象。
信号线连接到 ,可以选择连接到 14,也可以选择连接到 26 或将其连接到 27 ,但不要使用特殊的引脚。
舵机供电用5V,不要从ESP32的3.3V取电。
针对角度控制,采用write(0 180),要是精度不足伟创动力舵机,那就替换成()。
依照上面所提及的步骤以及代码,大多数的ESP32控制舵机的问题均可获得解决。要是舵机依旧处于不工作的状态,去检查供电情况,对引脚予以检查,去确认代码里头的库以及频率设置——这三个环节涵盖了超过90%的故障缘由。



