Raspberry pi舵机不停

Raspberry pi servo doesn't stop

所以我正在尝试将伺服系统 (Doman s0306d) 与 pi 相机一起使用,尝试 运行 我找到的这个脚本来测试电机,它启动 运行 但不会停止除非我手动从面包板上拔下它。

import RPi.GPIO as IO        # calling for header file for GPIO’s of PI
import time                           # calling for time to provide delays in program
IO.setwarnings(False)          # do not show any warnings
IO.setmode (IO.BCM)            # programming the GPIO by BCM pin numbers. (like PIN29 as‘GPIO5’)
IO.setup(19,IO.OUT)             # initialize GPIO19 as an output
p = IO.PWM(19,50)              # GPIO19 as PWM output, with 50Hz frequency
p.start(7.5)                             # generate PWM signal with 7.5% duty cycle
time.sleep(4)
for x in range(0,5):                                                       # execute loop forever                                    
        p.ChangeDutyCycle(7.5)                   # change duty cycle for getting the servo position to 90º
        time.sleep(1)                                      # sleep for 1 second
        p.ChangeDutyCycle(12.5)                  # change duty cycle for getting the servo position to 180º
        time.sleep(1)                                     # sleep for 1 second
        p.ChangeDutyCycle(2.5)                  # change duty cycle for getting the servo position to 0º
        time.sleep(1)                                    # sleep for 1 second
p.ChangeDutyCycle(0)
p.stop()
IO.cleanup()

有什么想法吗?谢谢。

[编辑] 您使用的伺服是 "continuous" 伺服 - 所以您需要给它零速度或 "STOP" 设置脉冲宽度1500us(根据网站http://www.domanrchobby.com/content/?150.html)。我没有在 pi 上使用 PWM,但如果百分比是 50Hz 脉冲率(20ms 间隔),那么它应该是你的 7.5% 中心值。您需要确保伺服在代码退出之前获得该脉冲。

[原文]你在退出时将占空比设置为0,这可能意味着舵机没有任何脉冲。有些舵机在没有收到脉冲后会停止,但有些舵机(尤其是数字舵机,但不是全部)会继续尝试从他们收到的最后一个脉冲开始实现设置。建议您将设置保留在您知道舵机可以达到的中间范围 7.5 并在清理之前延迟一段时间。