发布时间: 2026-05-03
此篇文章为您呈上舵机编程的完备代码示例,以及接线图解,还有视频教程指引,其中包含PWM舵机与串口舵机的控制办法,适用于诸如、树莓派等主流平台。不管您是在制作机械臂,还是制作机器人,亦或是航模,均可从中直接获取能够运行的代码以及清晰的接线方案。
假如您期望去制作一个能够依照人体的移动状况而做到自行转动头部的风扇,那么核心的那个部件便是舵机,您得去编写代码使得舵机依据传感器所输入的内容,精准地旋转至指定的角度,接下来的话,我们会起始于最为基础的单个舵机的控制,一步步地给出完整的代码。
PWM舵机通常有三根线:
棕色/黑色:GND(接地)
红色:VCC(电源,通常5V)
橙色/黄色:信号线(接控制板的PWM引脚)
接线表:
常见的错误情形是,直接运用控制板去驱动那种大扭矩的舵机,也就是扭矩大于5kg·cm的舵机,如此一来就会致使出现复位的状况,或者是造成烧坏的结果。所以要给舵机单独进行供电呀。
#
Servo ;
int pos = 0; // 角度变量 0180
int = 9; // 信号引脚
void setup() {
.();
.begin(9600);
.("舵机就绪");
}
void loop() {
// 示例1:从0度到180度,步进1度,延迟15ms
for (pos = 0; pos <= 180; pos += 1) {
.write(pos);
delay(15);
}
// 示例2:从180度回到0度
for (pos = 180; pos >= 0; pos = 1) {
.write(pos);
delay(15);
}
// 示例3:通过串口输入角度(0180)
if (.()) {
int angle = .();
if (angle >= 0 && angle <= 180) {
.write(angle);
.print("转到:");
.(angle);
}
}
}
关键参数说明:
.write(angle),此角度值范围是0至180度这一区间,其中部分舵机所支持的角度范围是0至360度,但这需要去查阅手册才行。
delay(ms):控制转动速度,值越大越慢
![]()
板上,最多能够驱动12个PWM舵机伟创动力,是使用不同引脚的情况下。
最先进行的安装,执行命令为:sudo apt ,接着开启守护进程,执行命令是:sudo 。
time
pi = .pi()
pin = 18 # (PWM脚)
# 设置PWM频率50Hz(周期20ms),范围0微秒
pi.(pin, .)
def (angle):
# 脉冲宽度 500~2500微秒 对应 0~180度
= 500 + (angle / 180.0) * 2000
pi.(pin, )
try:
while True:
for angle in range(0, 181, 5):
(angle)
time.sleep(0.05)
for angle in range(180, 1, 5):
(angle)
time.sleep(0.05)
:
pi.(pin, 0) # 释放舵机
pi.stop()
通过TTL/RS485总线来控制的串口舵机,一条总线能够挂载多个舵机 ,以下以最为常见,不同品牌协议有略微差异但核心相同的TTL串口舵机协议作为例子。
舵机VCC → 外部电源(7.4V或按手册)
舵机GND → 电源GND + 控制板GND
舵机TX/RX(或单总线)→ 控制板串口引脚
倘若舵机的ID设定为1,其协议是这样的,有着帧头(0x55),还有ID,接着是指令(0x03),之后是角度高位,再之后是角度低位,是校验和。
#
(10, 11); // RX, TX
void (int id, int angle) {
if (angle < 0) angle = 0;
if (angle > 1000) angle = 1000; // 通常0~1000对应0~300度
byte buf[8];
buf[0] = 0x55; // 帧头
buf[1] = 0x55; // 第二帧头(部分协议需要)
buf[2] = id; // 舵机ID
buf[3] = 0x03; // 写角度命令
buf[4] = angle >> 8; // 高位
buf[5] = angle & 0xFF; // 低位
// 校验和 = 所有字节(从buf[2]到buf[5]) 异或
byte = buf[2] ^ buf[3] ^ buf[4] ^ buf[5];
buf[6] = ;
buf[7] = 0x00; // 结束
.write(buf, 8);
}
void setup() {
.begin(); // 常用波特率
}
void loop() {
(1, 500); // 转到中间角度
delay(1000);
(1, 0);
delay(1000);
}
请依据,您手上舵机的官方协议手册,去调整帧格式,以及校验,还有角度范围。
在主流视频平台像B站、这般的,为了助力您以直观的方式去理解代码以及接线,以下是经过验证的,就是视频搜索关键词,直接搜索就行的:
1. 舵机那儿的控制,那代码有着详细的解释,附带接线实际操作以及串口监视器来调整角度。
2. 有关于“树莓派舵机”的“代码”伟创动力舵机,其中包含“PWM”配置,以及“角度平滑移动”方面的内容。
![]()
3. “串口舵机 编程教程” – 多舵机级联控制与反馈读取
4. “舵机 角度 代码 图解” – 脉冲宽度与角度对应关系动画
优先推荐观看的顺序是,去观看标明为“PWM原理 + 基础”的视频,以此来领会时序图以及代码结构,接着再去观看像是有关机械臂控制之类的具体项目视频,进而学习多舵机协同。
以下为您整理了一份通用代码速查表,您可以直接复制到项目中:
1. 舵机出现抖动且不转动的状况,这表明电源功率存在不足的问题。要去测量红色线与棕色线之间的电压,对于大舵机而言,需要用独立的6V或者7.4V电池来进行供电。
2. 只能够将角度转到90度,去检查代码里角度的范围是不是0到180,有部分舵机0度对应的脉冲是0.5ms,180对应的是2.5ms,需要进行校准。
3. 当串口舵机出现无反应的情况时,要去确认波特率,还要确认ID,并且要确认帧校验。可以使用逻辑分析仪去抓取TX信号,或者也可以使用示波器去抓TX信号。
4. 舵机顶烧录后维持末尾角度情形下耗费电流,这种状况下,于指令循环结束之前或者复位之际进行发送分离操作或者终止脉宽调制信号。
关键要点在于,把控舵机编程这件事的实质所在,便是弄明白PWM脉冲宽度跟角度之间的映射关联,此外还有串口总线协议的帧结构。在本文之中所给出的代码,以及相关的图解,还有视频资源,已然涵盖了从刚开始入门一直到项目实际应用的整个链路的需求,您无需再到各处去寻觅查找了。
行动建议:
1. 当下马上着手:取出一个PWM舵机,拿出一块板,备好几根杜邦线,去复制第二节所写的代码,在10分钟之内使得舵机能够转动起来。
2. 依照图像去寻找良马:开启视频播放平台,查找第四节当中的随便一个关键词,一边观看一边连接线路。
3. 逐步朝着更高级阶段迈进,在成功达成对单个舵机的控制之后,着手去尝试加载多个舵机,并且将传感器(像是超声波模块这类)添加进去,以此来实现相互之间的动态交互。
执行完上述三步,你就会对舵机编程做到根本性的掌握,进而能够独立自主地完成像机械臂、机器人头这类复杂的项目。要是存在任何调试方面的问题,那就得返回到本文第六节去排查常见问题。