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 并在清理之前延迟一段时间。
所以我正在尝试将伺服系统 (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 并在清理之前延迟一段时间。