天天看點

用Xbox360遊戲搖桿通過python代碼控制樹莓派4B點亮LED燈

材料:

1.樹莓派4B一個(系統我安裝的是Ubuntu 20.04.2 LST arm64位)

2.Xbox360遊戲搖桿一個

3.LED燈一個

Xbox搖桿簡介:

隻介紹本次要用到的按鍵部分:

X鍵和Y鍵的編号分别2号鍵和3号鍵,程式設計中用函數擷取這兩個鍵是否按下的狀态,來控制LED燈的亮滅。用Y控制樹莓派針腳輸出高電平使LED燈亮,用X控制針腳輸出低電平使LED燈滅,代碼及注釋下文給出。

用Xbox360遊戲搖桿通過python代碼控制樹莓派4B點亮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(接地)

用Xbox360遊戲搖桿通過python代碼控制樹莓派4B點亮LED燈
用Xbox360遊戲搖桿通過python代碼控制樹莓派4B點亮LED燈

搖桿連接配接到樹莓派上,輸入指令lsusb

lsusb
           

有如下紅框顯示則連接配接成功

用Xbox360遊戲搖桿通過python代碼控制樹莓派4B點亮LED燈

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鍵:

用Xbox360遊戲搖桿通過python代碼控制樹莓派4B點亮LED燈

按X鍵:

用Xbox360遊戲搖桿通過python代碼控制樹莓派4B點亮LED燈

參考資料:

https://blog.csdn.net/xingqilui126com/article/details/52075823

https://blog.csdn.net/qq_41556318/article/details/86305263