pyfirmata 中伺服运动之间的延迟不起作用

Delays between servo movements in pyfirmata don't work

我正在 python 中编写一个程序,其中在特定时间移动伺服系统是该项目的关键部分。为了实现这一点,我正在使用 pyfirmata 库。

我试过两种延迟方法,但 none 似乎有效。 当我 运行 代码时,舵机第一次转动,但在延迟之后,它没有转动,程序只是停止,而不是将舵机移动到 0 度,然后 然后 停止。

这是 pyfirmata 库中内置 board.pass_time() 的那个:

from pyfirmata import Arduino, util
import time
board = Arduino('COM3')
servo = board.get_pin('d:9:s')

servo.write(180)        #This works and turns the servo
time.sleep(1)
servo.write(0)          #This time the servo does not turn, then the program ends

这是 time.sleep():

from pyfirmata import Arduino, util
board = Arduino('COM3')
servo = board.get_pin('d:9:s')

servo.write(180)        #This works and turns the servo
board.pass_time(1)
servo.write(0)          #This time the servo does not turn, then the program ends

如果有人能提供帮助,我将不胜感激。

谢谢, 大卫

我找到答案了! 可能有更好的答案,但是如果我把 board.get_pin('d:9:s') 写成 board.get_pin('d:9:'),像这样,我需要用 0 到 5 的值来控制它,而不是 0 到 360,但是延迟工作

您的代码是正确的,但您需要再次进行延迟以将其调回 0 度。所以你的代码应该看起来像这样。

servo.write(180)
time.sleep(2)
servo.write(0)
time.sleep(2)

每次更改伺服电机时都需要给出延迟才能进行这些更改