You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派3与SG90微型舵机异常问题排查:C++及GPIO工具代码无效但Python与pigpio可正常运行

我来帮你排查一下C++和gpio工具控制舵机失效的问题——先从你给出的连接和测试信息入手分析:

舵机与树莓派GPIO连接说明
  • 舵机棕色线(GND):连接引脚#9(GND)
  • 舵机红色线(5V供电):连接引脚#2(5VO)
  • 舵机黄色线(信号):连接引脚#11(GPIO 17)

已验证可行的方案

Python(gpiozero)

代码运行正常,舵机能按预期切换位置:

from gpiozero import Servo
from time import sleep
servo = Servo(17)
while True:
    servo.mid()
    sleep(0.5)
    servo.min()
    sleep(0.5)
    servo.max()
    sleep(0.5)

pigpio

操作完全正常,舵机响应符合预期:

sudo pigpiod # 启动守护进程
pigs s 17 1500 # 中位
pigs s 17 1000 # 安全逆时针
pigs s 17 2000 # 安全顺时针

问题排查:C++(wiringPi)与gpio工具失效原因

1. C++代码的核心问题

你的wiringPi代码里,PWM脉冲宽度的数值设置错误。舵机需要的是50Hz频率(周期20ms)的信号,有效脉冲宽度范围通常是1ms(最小位置)到2ms(最大位置),中位是1.5ms。

你代码里的pwmSetClock(192)和pwmSetRange(2000)是正确的(计算下来刚好是20ms周期),但pwmWrite的参数完全不对:

  • 1ms脉冲对应数值是100(2000*(1/20))
  • 1.5ms对应150
  • 2ms对应200

你写的50对应0.5ms(远低于舵机响应阈值),250对应2.5ms(超过大部分舵机的安全范围,触发保护),所以舵机完全没反应。

修正后的C++代码(还加了初始化失败判断):

#include <cstdio> // printf()
#include <wiringPi.h> // wiringPiSetupGpio() pinMode() pwmSetMode() pwmSetRange() pwmSetClock() pwmWrite() delay()
int main() {
    int pin = 17;
    printf("Raspberry Pi wiringPi test program\n");
    if(wiringPiSetupGpio() == -1) {
        printf("wiringPi initialization failed!\n");
        return 1;
    }
    pinMode(pin, PWM_OUTPUT);
    pwmSetMode(PWM_MODE_MS);
    pwmSetClock(192);
    pwmSetRange(2000);
    while (true) {
        pwmWrite(pin, 100); // 1ms - 最小位置
        delay(1000);
        pwmWrite(pin, 150); // 1.5ms - 中位
        delay(1000);
        pwmWrite(pin, 200); // 2ms - 最大位置
        delay(1000);
    }
    return 0;
}

2. gpio工具的问题点

同样是操作时的编号模式问题,你之前的命令里gpio pwm-ms没有加-g参数,导致模式设置没有应用到BCM编号的GPIO17上,舵机自然没反应。正确的操作步骤应该是:

# 全程使用BCM编号(-g参数)
gpio -g mode 17 pwm
gpio -g pwm-ms
gpio -g pwmc 192
gpio -g pwmr 2000
# 测试中位
gpio -g pwm 17 150
sleep 1
# 测试最大位置
gpio -g pwm 17 200
sleep 1
# 测试最小位置
gpio -g pwm 17 100

额外提示

  • 可以用gpio -v检查wiringPi版本,旧版本可能存在PWM相关bug,必要时更新库
  • 如果舵机电流较大,建议用外部电源供电,避免树莓派5V引脚过载导致异常

内容的提问来源于stack exchange,提问作者GFB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 17:17:48