Задержки между сервоприводами у пифирматов не работают
Я пишу программу на Python, где перемещение сервоприводов в определенное время является важной частью проекта. Чтобы добиться этого, я использую библиотеку pyfirmata.
Я пробовал два метода задержек, но ни один из них, похоже, не работает. Когда я запускаю код, сервопривод поворачивается в первый раз, но после задержки он не поворачивается, и программа просто останавливается, вместо того, чтобы переместить сервопривод на 0 градусов и затем остановиться.
Это тот, в котором board.pass_time() встроен в библиотеку pyfirmata:
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
Я был бы очень признателен, если бы кто-то мог помочь.
Спасибо Дэвид
1 ответ
Я нашел ответ! Там может быть лучший ответ, но если я напишу 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)
Вам нужно давать задержку каждый раз, когда вы вносите изменения в серводвигатель, чтобы внести эти изменения.