Raspberry Pi - Joystick
Ce tutoriel vous explique comment utiliser un joystick avec un Raspberry Pi. Nous examinerons :
- Les principes de base du fonctionnement d'un joystick
- Connexion d'un joystick au Raspberry Pi et programmation pour celui-ci
- Conversion des valeurs du joystick en valeurs contrôlables telles que les coordonnées XY, la direction haut/bas/gauche/droite du moteur...
Préparation du matériel
Or you can buy the following sensor kits:
1 | × | DIYables Sensor Kit (30 sensors/displays) | |
1 | × | DIYables Sensor Kit (18 sensors/displays) |
À propos du joystick à 2 axes
Vous avez peut-être rencontré un joystick dans divers endroits, comme une manette de jeu, une manette de jouet, ou même une grande machine comme une manette d'excavatrice.
Le joystick est composé de deux potentiomètres disposés en forme de carré et d'un bouton poussoir. Il fournit les sorties suivantes :
- Une valeur analogique allant de 0 à 1023 qui correspond à la position horizontale (connue sous le nom de coordonnée X)
- Une valeur analogique allant de 0 à 1023 qui correspond à la position verticale (connue sous le nom de coordonnée Y)
- Une valeur numérique du bouton-poussoir (soit HIGH soit LOW)
La combinaison de deux valeurs analogiques peut générer des coordonnées 2D avec le centre représenté par les valeurs lorsque le joystick est en position de repos. Pour déterminer la direction réelle des coordonnées, un code de test peut être exécuté (présenté dans la section suivante).
Certaines applications peuvent utiliser les trois sorties, tandis que d'autres peuvent n'en utiliser que certaines.
Le brochage du Joystick
Un joystick a 5 broches :
- Broche GND : Celle-ci doit être connectée à GND (0V).
- Broche VCC : Celle-ci doit être connectée à VCC (5V).
- Broche VRX : Celle-ci émet une valeur analogique qui correspond à la position horizontale (connue sous le nom de coordonnée X).
- Broche VRY : Celle-ci émet une valeur analogique qui correspond à la position verticale (connue sous le nom de coordonnée Y).
- Broche SW : Voici la sortie du bouton-poussoir à l'intérieur du joystick. Elle est normalement ouverte. Si une résistance de tirage est utilisée sur cette broche, la broche SW sera HAUTE lorsqu'elle n'est pas pressée, et BASSE lorsqu'elle est pressée.
Comment ça marche
- Lorsque vous déplacez le pouce du joystick vers la gauche ou la droite, la tension sur la broche VRX change. Cette plage de tension va de 0V à 5V, 0V étant à gauche et 5V à droite, ce qui donne une valeur de lecture sur la broche analogique du Raspberry Pi de 0 à 1023.
- De même, lorsque vous déplacez le pouce du joystick vers le haut ou le bas, la tension sur la broche VRY change. Cette plage de tension va de 0V à 5V, 0V étant en haut et 5V en bas, ce qui donne une valeur de lecture sur la broche analogique du Raspberry Pi de 0 à 1023.
- Lorsque vous déplacez le pouce du joystick dans différentes directions, la tension sur les broches VRX et VRY change proportionnellement à la projection de la position sur chaque axe.
- Lorsque vous appuyez sur le pouce du joystick de haut en bas, le bouton-poussoir à l'intérieur du joystick se ferme. Si nous utilisons une résistance de tirage sur la broche SW, la sortie de la broche SW passera de 5V à 0V, ce qui entraînera une modification de la valeur de lecture sur la broche numérique du Raspberry Pi de HAUT à BAS.
Diagramme de câblage
This image is created using Fritzing. Click to enlarge image
Pour simplifier et organiser votre câblage, nous vous recommandons d'utiliser un Screw Terminal Block Shield pour Raspberry Pi. Ce shield garantit des connexions plus sûres et plus faciles à gérer, comme illustré ci-dessous :
Code Raspberry Pi
Cette section présentera les exemples de code Raspberry Pi suivants :
- Exemple de code : Obtention de valeurs analogiques du joystick
- Exemple de code : Obtention de valeurs analogiques et état du bouton du joystick
- Exemple de code : Conversion de la valeur analogique en commandes MOVE_LEFT, MOVE_RIGHT, MOVE_UP, MOVE_DOWN
- Exemple de code : Conversion des valeurs analogiques en angles pour contrôler deux servomoteurs (par exemple dans une caméra à inclinaison panoramique)
Lit les valeurs analogiques du joystick
Étapes rapides
- Assurez-vous d'avoir Raspbian ou tout autre système d'exploitation compatible avec Raspberry Pi installé sur votre Pi.
- Assurez-vous que votre Raspberry Pi est connecté au même réseau local que votre PC.
- Assurez-vous que votre Raspberry Pi est connecté à Internet si vous devez installer des bibliothèques.
- Si c'est la première fois que vous utilisez Raspberry Pi, consultez Installation du logiciel - Raspberry Pi..
- Connectez votre PC au Raspberry Pi via SSH en utilisant le client SSH intégré sur Linux et macOS ou PuTTY sur Windows. Consultez comment connecter votre PC au Raspberry Pi via SSH.
- Assurez-vous d'avoir installé la bibliothèque RPi.GPIO. Si ce n'est pas le cas, installez-la en utilisant la commande suivante :
- Installez la bibliothèque Adafruit_ADS1x15 en exécutant les commandes suivantes dans le terminal de votre Raspberry Pi :
- Créez un fichier script Python joystick.py et ajoutez le code suivant :
- Enregardez le fichier et exécutez le script Python en exécutant la commande suivante dans le terminal :
- Poussez le pouce du joystick à son maximum, puis tournez-le dans le sens horaire ou antihoraire.
- Vérifiez les résultats sur le terminal.
Tout en tournant le pouce du joystick, gardez un œil sur le Terminal.
Si la valeur de X est 0, notez ou retenez la position actuelle comme gauche, avec la direction opposée étant droite.
Si la valeur Y est 0, notez ou retenez la position actuelle comme étant vers le haut, avec la direction opposée étant vers le bas.
Le script s'exécute dans une boucle infinie en continu jusqu'à ce que vous appuyiez sur Ctrl + C dans le terminal.
Lit des valeurs analogiques et lit l'état du bouton d'un joystick
Étapes rapides
- Créez un fichier de script Python joystick_sw.py et ajoutez le code suivant :
- Enregistrez le fichier et exécutez le script Python en entrant la commande suivante dans le terminal :
- Déplacez le pouce du joystick vers la gauche, la droite, le haut ou le bas.
- Appuyez sur le pouce du joystick par le haut.
- Vérifiez les résultats sur le Terminal.
Convertit la valeur analogique en commandes DÉPLACER GAUCHE/DROITE/HAUT/BAS
Étapes rapides
- Créez un fichier de script Python joystick_cmd.py et ajoutez le code suivant :
- Enregistrez le fichier et exécutez le script Python en exécutant la commande suivante dans le terminal :
- Déplacez le joystick dans n'importe quelle direction.
- Vérifiez le résultat dans le Terminal.
※ Note:
À un moment donné, il peut n'y avoir aucune commande, une commande ou deux commandes simultanément (par exemple, HAUT et GAUCHE).
Convertit les valeurs analogiques en angles pour contrôler deux servomoteurs.
Les détails peuvent être trouvés dans le tutoriel intitulé Raspberry Pi - Joystick contrôle le moteur Servo.