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

时间:2019-02-24 13:39:39

标签: python arduino pyserial servo firmata

我正在用python编写程序,其中在特定时间移动伺服器是该项目的关键部分。为此,我正在使用pyfirmata库。

我尝试了两种延迟方法,但是似乎都没有。 当我运行代码时,伺服器第一次转动,但是在延迟之后,它没有转动,程序只是停止了,而不是将伺服器移至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

如果有人可以提供帮助,我将非常感激。

谢谢你, 大卫

2 个答案:

答案 0 :(得分:0)

我找到了答案! 也许会有更好的答案,但是如果我将board.get_pin('d:9:s')写为board.get_pin('d:9:'),就像这样,我需要用0到5而不是0到360的值来控制它,但是延迟起作用了

答案 1 :(得分:0)

您的代码正确,但是您需要再次进行延迟以将其恢复为0度。因此,您的代码应如下所示。

<div id="divID">
   <div id="bad">
      <iframe id="iframeID">
         <div id="bad2">
         <p>Hello World</p>
         </div>  
      </iframe>
   </div>
</div>

每次更改伺服电机时都需要延迟,以进行更改