Задержки между сервоприводами у пифирматов не работают

Я пишу программу на 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)

Вам нужно давать задержку каждый раз, когда вы вносите изменения в серводвигатель, чтобы внести эти изменения.

Другие вопросы по тегам