材料:

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-8
import pygame
import RPi.GPIO as GPIO
import time
#BCM编号方式
GPIO.setmode(GPIO.BCM)
#BCM编码21号针脚设置成输出模式 
GPIO.setup(21,GPIO.OUT) 
GPIO.setwarnings(False)

# 模块初始化
pygame.init()
pygame.joystick.init()

# 若只连接了一个手柄,此处带入的参数一般都是0
joystick = pygame.joystick.Joystick(0)
# 手柄对象初始化
joystick.init()

done = False

while 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键:
在这里插入图片描述

参考资料:
https://blog.csdn.net/xingqilui126com/article/details/52075823
https://blog.csdn.net/qq_41556318/article/details/86305263

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐