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:

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.
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:
|
1 2 3 4 5 6 7 8 9 dix 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#! / usr / bin / python importation spidev importation os importation temps # Définir les canaux d’axe (les canaux 3 à 7 peuvent être attribués pour plus de boutons / joysticks) swt_channel = 0 vrx_channel = 1 vry_channel = 2 #Time delay, qui indique combien de secondes la valeur est lue retard = 0,5 # Spi oeffnen spi = spidev.SpiDev() spi.ouvert(0,0) # Fonction de lecture du canal MCP3008 entre 0 et 7 def readChannel(canal): val = spi.xfer2([[1,(8+canal)<<4,0]) Les données = ((val[[1]&3) << 8) + val[[2] revenir Les données # boucle sans fin tandis que Vrai: # Déterminer la position vrx_pos = readChannel(vrx_channel) vry_pos = readChannel(vry_channel) # SW déterminer swt_val = readChannel(swt_channel) # production impression(« VRx: {} VRy: {} SW: {} ».format(vrx_pos,vry_pos,swt_val)) # attendre temps.dormir(retard) |
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).
-
AZDelivery 3 x KY-023 Joystick Module Compatible avec Arduino et Raspberry Pi y Compris Un eBook
-
Fosiya 2 Joueurs Arcade Joystick LED Chrome Boutons poussoirs pour PC MAME Raspberry Pi Jeux vidéo Arcade Cabinet Pièces (Rouge Jaune)

