4 – Utiliser une manette sans-fil de Xbox 360

Installation du pilote

J’utilise une manette sans-fil de Xbox 360 prévue pour PC. Pour installer les pilotes :

sudo apt-get install xboxdrv

On vérifie que la manette est prête à être utilisée :

sudo xboxdrv

 

Comme indiqué, s’il y a une erreur Error couldn't claim the USB interface: LIBUSB_ERROR_BUSY, il faut exécuter la commande sudo rmmod xpad puis relancer xboxdrv, ou lancer xboxdrv avec l’option --detach-kernel-driver.

On peut démarrer la manette si ce n’était pas déjà, et cette commande affiche les événements qu’elle reçoit. Si aucun événement ne s’affiche, il faut peut-être resynchroniser en appuyant 3 secondes sur le bouton du récepteur, puis sur celui de la manette.

 

Source : http://mattdyson.org/blog/2013/01/using-an-xbox-360-wireless-controller-with-raspberry-pi/

 

Utilisation avec Python

Pour l’utiliser avec Python, j’utilise ce script écrit par Zephod : https://github.com/zephod/lego-pi/blob/master/lib/xbox_read.py
Pour l’utiliser en tant que librairie, on le met dans un dossier lib avec un fichier __init__.py qui peut être vide. Ce fichier sert à indiquer que le dossier est un package importable.

 

L’arborescence des fichiers est :

.
├── lib
│   ├── __init__.py        Vide
│   ├── xbox_read.py       Script de Zephod pour traiter les évenements
└── test.py                Script principal

 

Le fichier test.py contient :

#!/usr/bin/python

from lib import xbox_read

for event in xbox_read.event_stream(deadzone=12000):
	print event

 

On lui donne les droits en exécution et on le lance :

chmod +x test.py
sudo python test.py

 

Source : https://github.com/zephod/lego-pi
http://tomre.es/post/lego-xbox-raspberry-pi/
http://mattdyson.org/blog/2013/01/using-an-xbox-360-wireless-controller-with-raspberry-pi/

 

Contrôle de GPIO

En guise de Hello World, on va allumer une LED à l’appui du bouton A de la manette. Voici le schéma de montage associé :

 

Schéma de montage

Schéma de montage

 

On garde la même arborescence de fichier que précédemment :

.
├── lib
│   ├── __init__.py        Vide
│   ├── xbox_read.py       Script de Zephod pour traiter les évenements
└── led.py                 Script principal

 

Pour interagir avec les entrées/sorties GPIO, on utilise le module RPi.GPIO. Je n’ai pas eu besoin de l’installer sur le Raspberry mais si jamais, voici les instructions d’installation.

#!/usr/bin/python

import RPi.GPIO as GPIO
from lib import xbox_read
import time

#-------------[ CABLAGE ]--------------------

LED_PIN = 04

#-------------[ INITIALISATION DES GPIOS ]--------------

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)

GPIO.setup(LED_PIN, GPIO.OUT)

#-------------[ ECOUTE DU CONTROLEUR ]--------------

print 'En avant Guingamp !'

# En attente d'evenement de la manette
for event in xbox_read.event_stream(deadzone=12000):
    if event.key == 'A':
		GPIO.output(LED_PIN, event.value)
		if event.value == 1:
			print 'Bip'

 

Documentation de RPi.GPIO : https://sourceforge.net/p/raspberry-gpio-python/wiki/Examples/

1 comment

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.