所以我正在尝试使用伺服(Doman s0306d)和pi相机,尝试运行我发现测试电机的脚本,它开始运行但不会停止,除非我手动从面包板上拔下它。< / p>
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()
有什么想法吗?谢谢。
答案 0 :(得分:1)
[编辑] 您使用的伺服是一个“连续”伺服 - 因此您需要给它零速或“STOP”设置脉冲宽度1500us(根据网站{{ 3}})。我没有在pi上使用PWM,但如果百分比是50Hz脉冲率(20ms间隔)那么那应该是你的7.5%中心值。在代码退出之前,您需要确保伺服器获得该脉冲。
[原始]退出时将占空比设置为0,这可能意味着伺服不会产生任何脉冲。有些伺服系统会在没有脉冲后停止运行,但有些伺服系统(特别是数字伺服系统,但不是全部)将继续尝试从接收到的最后一个脉冲开始设置。建议你将设置保留在中间范围7.5,你知道伺服可以达到并在清理前延迟一段时间。