用Xbox360游戏手柄通过python代码控制树莓派4B点亮LED灯

3 篇文章 0 订阅
1 篇文章 0 订阅
材料:

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

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值