我已经将一个模拟操纵杆连接到我的树莓PI 3B上,我试图让上下左右移动映射到W A S D.代码如下:
#!/usr/bin/env python3
import RPi.GPIO as GPIO
import ADC0834
import time
from pynput.keyboard import Key, Controller
BtnPin = 22
def setup():
# Set the GPIO modes to BCM Numbering
GPIO.setmode(GPIO.BCM)
GPIO.setup(BtnPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
ADC0834.setup()
def destroy():
# Release resource
GPIO.cleanup()
def loop():
keyboard = Controller()
while True:
x_val = ADC0834.getResult(0)
y_val = ADC0834.getResult(1)
Btn_val = GPIO.input(BtnPin)
# Map joystick input to keyboard keys
if y_val < 127:
keyboard.press(Key.W)
keyboard.release(Key.W)
elif y_val > 127:
keyboard.press(Key.S)
keyboard.release(Key.S)
if x_val < 131:
keyboard.press(Key.A)
keyboard.release(Key.A)
elif x_val > 131:
keyboard.press(Key.D)
keyboard.release(Key.D)
time.sleep(0.2)
if __name__ == '__main__':
setup()
try:
loop()
except KeyboardInterrupt: # When 'Ctrl+C' is pressed, the program destroy() will be executed.
destroy()
当代码从终端运行时,我收到以下错误消息:
Traceback (most recent call last):
File "/home/pi/Joystick.py", line 46, in <module>
loop()
File "/home/pi/Joystick.py", line 31, in loop
keyboard.press(Key.S)
File "/usr/lib/python3.9/enum.py", line 405, in __getattr__
raise AttributeError(name) from None
AttributeError: S
我已经通过sudo pip3 install pynput
下载了库pynput,并且我还try 在代码中转换W A S D的大小写.模拟输出也能正常工作.我只是想不出如何正确地映射到W A S D.任何帮助都是附属品.