材料:
1.树莓派4B一个(系统我安装的是Ubuntu 20.04.2 LST arm64位)
2.Xbox360游戏手柄一个
3.LED灯一个
Xbox手柄简介:
只介绍本次要用到的按键部分:
X键和Y键的编号分别2号键和3号键,编程中用函数获取这两个键是否按下的状态,来控制LED灯的亮灭。用Y控制树莓派针脚输出高电平使LED灯亮,用X控制针脚输出低电平使LED灯灭,代码及注释下文给出。
开始:
1)在系统上安装软件joystick和xboxdrv
sudo apt-get install joystick
sudo apt-get install xboxdrv
2)安装python以及pygame库
sudo apt-get install python
sudo apt-get install python-pygame
3)将LED灯的正极接到树莓派的以BCM编码的21号针脚(GPIO.29),负极接到相邻的GND(接地)
手柄连接到树莓派上,输入指令lsusb
lsusb
有如下红框显示则连接成功
4)创建xbox.py文件,添加如下代码并保存
#coding:utf-8import pygameimport RPi.GPIO as GPIOimport time#BCM编号方式GPIO.setmode(GPIO.BCM)#BCM编码21号针脚设置成输出模式 GPIO.setup(21,GPIO.OUT) GPIO.setwarnings(False)# 模块初始化pygame.init()pygame.joystick.init()# 若只连接了一个手柄,此处带入的参数一般都是0joystick = pygame.joystick.Joystick(0)# 手柄对象初始化joystick.init()done = Falsewhile not done:#pygame.event.get()可以获得当前用户所做动作的事件列表for event_ in pygame.event.get():#pygame.JOYBUTTONDOWN和event_.type == pygame.JOYBUTTONUP分别为操作杆动作"按键按下"和"按键抬起"if event_.type == pygame.JOYBUTTONDOWN or event_.type == pygame.JOYBUTTONUP:#joystick.get_button(3)为获取按键3(Y键)动作,返回1为按下,0为抬起if joystick.get_button(3)==1:#21号针脚输出高电平GPIO.output(21,GPIO.HIGH)#joystick.get_button(2)为获取按键2(X键)动作,返回1为按下,0为抬起if joystick.get_button(2)==1: #21号针脚输出低电平GPIO.output(21,GPIO.LOW)pygame.quit()
5)在命令行中输入以下指令运行xbox.py
python xbox.py
随后操作手柄,按下Y键LED灯亮,按下X键LED灯灭
按Y键:
按X键:
参考资料:
/xingqilui126com/article/details/52075823
/qq_41556318/article/details/86305263