Я создаю базового робота DVa Mech (хобби).Это не двуногий.Колесное шасси.Весь код на питоне.
Как непрерывно выполнять действия, удерживая нажатой кнопку, нажимая джойстик?И могу ли я даже сделать два (или больше) одновременно: двигать колеса вперед, поворачивать торс, стрелять из пушек?
Я хорошо читаю ввод данных с джойстика.Сервоприводы тоже работают.Кажется, я не могу понять логические циклы «пока нажата кнопка - сделай что-нибудь - и продолжай сканировать для большего ввода»
Пробовал разные вещи ... они не работали, поэтому они вышли изкод ниже.
Запуск 6 непрерывных сервоприводов (4 для шасси, два для мини-пушек) Джойстик Logitech F710
from evdev import InputDevice, categorize, ecodes, KeyEvent
from adafruit_servokit import ServoKit
import time
kit = ServoKit(channels = 16)
gamepad = InputDevice('/dev/input/event7')
print (gamepad)
for event in gamepad.read_loop():
if event.type == ecodes.EV_KEY:
keyevent = categorize(event)
if keyevent.keystate == KeyEvent.key_down:
print(keyevent)
....
elif keyevent.keycode == 'BTN_TL':
print ("Guns")
elif event.type == ecodes.EV_ABS:
absevent = categorize(event)
print(absevent.event.code)
if ecodes.bytype[absevent.event.type][absevent.event.code] == 'ABS_HAT0X':
if absevent.event.value == -1:
print('left')
elif absevent.event.value == 1:
print('right')
if ecodes.bytype[absevent.event.type][absevent.event.code] == 'ABS_HAT0Y':
if absevent.event.value == -1:
print('forward')
elif absevent.event.value == 1:
print('back')
Довольно просто ... при нажатии BTN_TL, сервоприводы 5 и 6должен вращаться до тех пор, пока кнопка не будет отпущена
Аналогично с HAT0X и 0Y сервоприводы должны двигаться вперед / назад / влево / вправо при нажатии.
Я пробовал циклы while и еще много чего ... нов джойстике есть логическая / временная последовательность, которую я не помещаю в нужное место