Utilisez un joystick sur le Raspberry Pi (avec MCP3008)

Pour certaines applications, comme les jeux, un joystick peut être utile ou même nécessaire. Comme ceux-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 didacticiel.

Ces joysticks analogiques ont deux axes, qui permettent à une certaine tension de passer à 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 le côté gauche se trouvent 8 entrées analogiques, dont nous n’avons besoin que de 3.

Sur le côté droit se trouvent les sorties numériques, où la transmission a lieu via DIN et DOUT.

Le périphérique MCP3008 est un convertisseur analogique-numérique 10 bits. Cela signifie qu’il peut atteindre un maximum de 2 ^ 10, soit 1024 combinaisons de bits (les valeurs de 0 à 1023). Avec une tension d’entrée de 3,3 V, les env. 3.2mV sont des étapes qui peuvent être mappées (3.3V).

Accessoires

Installer

Bien que le joystick ait une tension d’entrée de 5 V, il fonctionne sans problème avec 3,3 V, ce qui est encore plus important lors de l’utilisation du MCP3008. Le terme SW désigne le bouton qui est activé lorsque vous appuyez sur le joystick. Pour que ce soit 0 ou 1023 (pressé ou non pressé), une résistance de 10 kΩ est attachée au VCC. Sans cette résistance, des numéros invalides sont sortis qui ne peuvent pas être clairement attribués.

joystick_Steckplatine

L’affectation des broches de la Raspberry PI ressemble à ceci:

Tarte aux Raspberry PI MCP3008
Broche 1 (3,3 V) Broche 16 (VDD)
Broche 1 (3,3 V) 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)

Après la connexion au joystick:

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

Essai

Dans mon script, j’utilise le SpiDev bibliothèque. Si vous ne l’avez pas déjà installé, vous devez 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 en “état de repos”, c’est-à-dire au milieu, environ 512 seront renvoyés. 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 de test

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

ou créez-le vous-même:

Ensuite, vous pouvez démarrer le script en

sudo python joystick_test.py

et déplacez le joystick. Vous constaterez que 1024 pas sont probablement trop, car la précision du doigt sur un petit joystick est difficilement réalisable. Par conséquent, je recommanderais de définir des zones dans une application plutôt que de tester des valeurs individuelles (à l’exception de 0/1023).

Articles similaires

Bouton retour en haut de la page
Fermer