Arduino UNO R4 - Joystick
Dans ce guide, nous allons apprendre à utiliser un joystick avec l'Arduino UNO R4. Nous aborderons les sujets suivants :
- Comment fonctionne un joystick
- Comment connecter un joystick à l'Arduino UNO R4
- Comment programmer l'Arduino UNO R4 pour lire les valeurs d'un joystick
- Comment convertir les valeurs lues par le joystick en valeurs exploitables (par exemple des coordonnées XY ou des directions pour un moteur)

Préparation du matériel
Ou vous pouvez acheter les kits suivants:
1 | × | Kit de Démarrage DIYables STEM V4 IoT (Arduino inclus) | |
1 | × | Kit de Capteurs DIYables (30 capteurs/écrans) | |
1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
À propos du joystick
Vous avez peut-être vu un joystick utilisé comme contrôleur de jeu, comme contrôleur de jouet, ou même dans de grandes machines comme les contrôleurs d’excavatrice.
Le joystick comporte deux potentiomètres disposés en formation carrée et un bouton poussoir. Il fournit les sorties suivantes :
- Une valeur analogique (de 0 à 1023) pour la position horizontale (coordonnée X)
- Une valeur analogique (de 0 à 1023) pour la position verticale (coordonnée Y)
- Un état numérique d'un bouton (HIGH ou LOW)
Lorsque vous combinez deux valeurs analogiques, elles forment des coordonnées en deux dimensions. Ces coordonnées sont centrées lorsque le joystick n'est pas déplacé. Vous pouvez facilement déterminer la direction réelle de ces coordonnées en exécutant un code de test, que nous aborderons dans la section suivante.
Certaines applications pourraient utiliser les trois sorties, alors que d'autres n'en utiliseraient que certaines.
Schéma des broches
Un joystick utilise cinq broches.
- Broche GND : connectez-la à GND (0V)
- Broche VCC : connectez-la à VCC (5V)
- Broche VRX : donne une valeur analogique pour la position horizontale (coordonnée X)
- Broche VRY : donne une valeur analogique pour la position verticale (coordonnée Y)
- Broche SW : provient du bouton-poussoir du joystick. Elle est généralement ouverte. L'utilisation d'une résistance de tirage (pull-up) fait que cette broche est à l'état haut lorsque non pressée et à l'état bas lorsque pressée.

Comment cela fonctionne
- Mouvement Gauche/Droite
- Lorsque vous déplacez le joystick vers la gauche ou vers la droite, il modifie le signal électrique (tension) à la broche VRX.
- En allant vers la gauche, la tension chute à 0 volt.
- En allant vers la droite, la tension augmente à 5 volts.
- L'Arduino lit cette tension et la convertit en un nombre entre 0 et 1023. Ainsi, 0V correspond à 0 et 5V correspond à 1023.
- Mouvement Haut/Bas:
- De même, déplacer le joystick vers le haut ou le bas modifie la tension à la broche VRY.
- En allant vers le haut, la tension chute à 0 volt.
- En allant vers le bas, la tension augmente à 5 volts.
- L'Arduino lit aussi cette tension, la convertissant en un nombre entre 0 et 1023, tout comme pour la broche VRX.
- Mouvements Combinés:
- Lorsque vous déplacez le joystick dans n'importe quelle direction (pas seulement purement gauche/droite ou haut/bas), il modifie la tension sur les broches VRX et VRY en fonction de sa position le long de chaque axe.
- Appuyer sur le Joystick:
- Lorsque vous appuyez sur le joystick vers le bas (comme appuyer sur un bouton), il active un bouton interne à l'intérieur du joystick.
- Si vous connectez une résistance de tirage (pull-up) à la broche SW, la tension sur cette broche passera de 5V à 0V lorsque vous appuyez.
- L'Arduino lit ce changement comme un signal numérique, affichant HIGH (5V) lorsque ce n'est pas pressé et LOW (0V) lorsque c'est pressé.
En résumé, déplacer le joystick modifie les tensions sur VRX et VRY, que l'Arduino lit comme des nombres compris entre 0 et 1023. Appuyer sur le joystick modifie la tension sur la broche SW, que l'Arduino lit comme HIGH ou LOW.
Diagramme de câblage

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Comment programmer pour un joystick
Le joystick se compose de deux composants : une partie analogique (les axes X et Y) et une partie numérique (un bouton-poussoir).
- Pour lire les valeurs des axes X et Y, il suffit d'utiliser la fonction analogRead() sur la broche d'entrée analogique.
- Pour la partie numérique, qui est un bouton-poussoir : ce n'est qu'un bouton. Une méthode simple et efficace consiste à utiliser la bibliothèque ezButton. Cette bibliothèque aide à gérer la stabilité du bouton et active également un système interne pour maintenir le bouton stable. Vous pouvez en savoir plus dans le Arduino UNO R4 - Bouton.. Nous vous montrerons comment utiliser le code dans la prochaine partie de ce tutoriel.
Après avoir obtenu les lectures des broches analogiques, il peut être nécessaire de les convertir en valeurs plus faciles à manipuler. La section suivante fournira des exemples de code pour cela.
Code pour Arduino UNO R4
Voici des exemples de codes pour l'Arduino UNO R4 :
- Exemple de code : récupère les valeurs analogiques du joystick
- Exemple de code : récupère les valeurs analogiques et vérifie l'état du bouton sur le joystick
- Exemple de code : change la valeur analogique en commandes : MOVE_LEFT, MOVE_RIGHT, MOVE_UP, MOVE_DOWN
- Exemple de code : transforme les valeurs analogiques en angles pour gérer deux servomoteurs (comme dans une caméra pan-tilt)
Lit les valeurs analogiques du joystick
Étapes rapides
Suivez ces instructions étape par étape :
- Si c'est la première fois que vous utilisez l'Arduino Uno R4 WiFi/Minima, reportez-vous au tutoriel sur Arduino UNO R4 - Installation du logiciel..
- Connectez le joystick à l'Arduino UNO R4 selon le schéma fourni.
- Connectez la carte Arduino Uno R4 à votre ordinateur à l'aide d'un câble USB.
- Lancez l'IDE Arduino sur votre ordinateur.
- Sélectionnez la carte Arduino Uno R4 appropriée (par exemple, Arduino Uno R4 WiFi) et le port COM.
- Copiez le code ci-dessus et ouvrez-le dans l'IDE Arduino.
- Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code sur votre Arduino UNO R4.
- Poussez le stick du joystick jusqu’au bord, puis faites-le tourner en cercle (dans le sens horaire ou antihoraire).
- Vérifiez les résultats dans le moniteur série.
- En tournant le joystick, gardez un œil sur le moniteur série. Si la valeur X affiche 0, considérez cette position comme gauche ; l'inverse est droite. Si la valeur Y est 0, notez cette position comme étant en haut ; l'inverse est en bas.
Lit les valeurs analogiques et lit l'état du bouton d'un joystick
Étapes rapides
- Accédez à l'icône Libraries sur le côté gauche de l'IDE Arduino.
- Recherchez “ezButton” et localisez la bibliothèque de boutons par ArduinoGetStarted.com.
- Appuyez sur le bouton Install pour ajouter la bibliothèque ezButton.

- Copiez le code et ouvrez-le dans l'IDE Arduino.
- Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code sur l'Arduino UNO R4.
- Déplacez le joystick vers la gauche, vers la droite, vers le haut ou vers le bas.
- Appuyez sur le dessus du joystick.
- Vérifiez les résultats dans le Moniteur Série.
Convertit une valeur analogique en commandes Gauche/Droite/Haut/Bas
Étapes rapides
- Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino.
- Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code vers l'Arduino UNO R4.
- Faites bouger le joystick vers la gauche, vers la droite, vers le haut, vers le bas, ou dans toute autre direction.
- Vérifiez les résultats dans le Moniteur Série.
※ Note:
Parfois, il peut n'y avoir aucune commande, une commande ou deux commandes en même temps (par exemple, HAUT et GAUCHE ensemble).
Convertit des valeurs analogiques en angles pour contrôler deux servomoteurs
Vous pouvez trouver des informations sur le tutoriel Arduino UNO R4 - Joystick - Servomoteur..