我是编程新手,正在使用Python/pyfirmata通过我的arduino控制一个小伺服电机。我让马达按我想要的方式工作:它每3秒钟旋转x度。问题是,我希望它一直这样做,直到用户输入告诉它停止
下面的代码将持续请求用户输入,这(如果按下1+ENTER)会导致电机转动3次,然后再次请求用户输入。我想不出一个办法,让电机在这些位置连续运行,同时能够采取用户输入停止电机
换一种方式说,这就是我想做的: 电机关闭,请求用户输入。 用户按下1+回车键,电机开始在各个位置循环。如果用户按下2+回车键,电机停止。如果用户再次按1+回车键,电机将再次开始循环。看起来很简单,希望如此
我的当前代码:
from pyfirmata import SERVO
from pyfirmata import Arduino
board = Arduino("COM4")
board.digital[10].mode = SERVO
servo1 = board.get_pin('d:10:0')
while True:
user_control = input('Enter 1 to start motor and 2 to stop motor \n')
if user_control == '1':
servo1.write(45)
time.sleep(3)
servo1.write(90)
time.sleep(3)
servo1.write(180)
time.sleep(3)
elif user_control == '2':
servo1.write(45)
print('motor paused')
感谢大家的投入。我现在已经按我想要的方式工作了。最后,我创建了一个线程来运行
user_input
函数,并threading.Timer
使其循环,以便每1秒提供一次新的输入。该线程的输出在arduino上设置一个pin值,该值确定控制电机的while loop
是否运行,从而使电机转动。再次感谢!我的代码在下面相关问题 更多 >
编程相关推荐