Utiliser un joystick sur le Raspberry Pi (avec MCP3008)

Pour certaines applications, telles que les jeux, un joystick peut être utile, voire nécessaire. Comme celles-ci fonctionnent généralement de manière purement analogique, le signal doit être converti, ce que nous faisons avec la puce MCP3008. La connexion et la lecture d’un joystick sont présentées dans ce tutoriel.

 

Ces joysticks analogiques ont deux axes, qui permettent de faire passer une certaine tension à travers deux potentiomètres (résistance réglable). Pour que la position puisse également être lue numériquement sur le Raspberry, le MCP3008 est nécessaire. Le schéma de ce module est le suivant :

mcp3008-e1397762478714

Sur la partie gauche se trouvent 8 entrées analogiques, dont 3 seulement sont nécessaires.

Sur la partie droite se trouvent les sorties numériques, où la transmission s’effectue via DIN et DOUT.

L’appareil MCP3008 est un convertisseur analogique-numérique de 10 bits. Cela signifie qu’il peut atteindre un maximum de 2 ^ 10, c’est-à-dire 1024 combinaisons de bits (les valeurs de 0 à 1023).

Avec une tension d’entrée de 3,3V, les 3,2mV environ sont des étapes qui peuvent être cartographiées (3,3V).

Accessoires

 

Installation

Bien que le joystick ait une tension d’entrée de 5V, il fonctionne sans problème en utilisant 3,3V, ce qui est encore plus important lorsqu’on utilise le MCP3008. Le terme SW désigne le bouton qui est activé lorsque vous appuyez sur le joystick. Pour que cela soit 0 ou 1023 (enfoncé ou non enfoncé), une résistance 10kΩ est attachée au VCC. Sans cette résistance, des nombres invalides sont émis et ne peuvent pas être clairement attribués.

 

joystick_Steckplatine

L’affectation de la broche du Raspberry ressemble à ceci :

Raspberry Pi MCP3008
Broche 1 (3,3V) Broche 16 (VDD)
Broche 1 (3,3V) Broche 15 (VREF)
Broche 6 (GND) Broche 14 (AGND)
Broche 23 (SCLK) Broche 13 (CLK)
Broche 21 (MISO) Broche 12 (DOUT)
Broche 19 (MOSI) Broche 11 (DIN)
Broche 24 (CE0) Broche 10 (CS/SHDN)
Broche 6 (GND) Broche 9 (DGND)

En suivant la connexion au joystick :

RPi / MCP3008 Joystick
 Raspberry Broche 6 (GND)  GND
 Raspberry Broche 1 (3,3V)  +5V
Broche 1 (CH0)  SW
Broche 2 (CH1)  VRx
Broche 3 (CH2)  VRy

 

Essais

Dans mon scénario, j’utilise la bibliothèque SpiDev. Si vous ne l’avez pas encore installée, vous devriez le faire avant de tester le joystick.

Comme mentionné précédemment, le MCP3008 renvoie une valeur comprise entre 0 et 1023. Si le joystick est à l’état « inactif », c’est-à-dire au milieu, environ 512 sera renvoyé. 0 est renvoyé à une extrémité d’un axe et 1023 à l’autre extrémité (à quelle extrémité cela dépend de la façon dont vous regardez le joystick).

Vous pouvez télécharger le fichier test

wget http://www.tutorials-raspberrypi.de/wp-content/uploads/scripts/joystick_test.py

ou le créer vous-même :

Vous pouvez ensuite commencer le scénario par

sudo python joystick_test.py

et déplacez le joystick. Vous constaterez que 1024 étapes sont probablement trop, car la précision des doigts sur un petit joystick peut difficilement être atteinte. C’est pourquoi je recommanderais de définir des zones dans une application plutôt que de tester des valeurs individuelles (à part 0/1023).

Leave a Comment

Your email address will not be published.