我正在构建一个基本的 DVa Mech 机器人(爱好)。这是非双足的。轮式底盘。python中的所有代码。
如何在按住按钮、推动操纵杆的同时连续执行活动?我什至可以同时做两个(或更多):向前移动车轮、转动躯干、开枪?
我正在阅读操纵杆输入。伺服也可以工作。我似乎无法弄清楚“按下按钮时 - 做某事 - 并继续扫描以获取更多输入”的逻辑循环
尝试了各种事情......他们没有工作,所以他们不在下面的代码中。
运行 6 个连续伺服系统(4 个用于底盘,两个用于迷你枪)罗技 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循环等等......但是在操纵杆输入中有一个逻辑/时序序列我没有放在正确的位置