Lire un joystick avec Arduino
Dans ce tutoriel, nous vous montrons comment lire un joystick avec une carte compatible Arduino UNO.
Avec des joysticks, vous placez vos projets sous contrôle analogique ! Ce module de joystick convient parfaitement pour une commande à 2 axes, comme celle souvent utilisée dans les bras robotisés. Le module est également idéal comme méthode d'entrée pour les jeux et les menus.
Ce module de joystick possède 5 broches : GND, 5V, VRx, VRy et SW. L'étiquetage peut varier selon le lot, mais l'affectation et la fonction restent les mêmes. Le joystick fonctionne de manière analogique et fournit des valeurs plus précises que les joysticks numériques. Il dispose d'un bouton intégré qui peut être activé en appuyant dessus. Cela permet par exemple de programmer des fonctions de basculement (Toggle) ou de sélection (Select).
Composants nécessaires :
- Carte compatible Arduino UNO R3
- Module Joystick
- Câble 5 connecteurs fiches
Fonctionnement
Sur l'Arduino, les données des broches X et Y sont lues via des entrées analogiques. Le module joystick possède un potentiomètre pour l'axe X et un pour l'axe Y. Selon la position du joystick, une tension de sortie différente est envoyée à notre Arduino. La carte Arduino convertit la tension analogique comprise entre 0 et 5 V en valeurs allant de 0 à 1023. Le bouton fournit en permanence 2 V ; lorsqu'il est actionné, il est connecté à la masse (GND). Dans le moniteur série, nous lisons 1 en état de repos et 0 lors de l'activation.
Schéma électronique
| Joystick | Arduino |
| GND | Masse |
| +5V | 5V |
| VRx | Broche analogique A0 |
| VRy | Broche analogique A1 |
| SW | Broche numérique 2 |
Code pour Arduino
Afficher / masquer le code
const int SW_pin = 2; // Broche du bouton
const int X_pin = A0; // Sortie X
const int Y_pin = A1; // Sortie Y
void setup() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
Serial.begin(9600);
}
void loop() {
Serial.print("Bouton : ");
Serial.print(digitalRead(SW_pin));
Serial.print("\n");
Serial.print("Axe X : ");
Serial.print(analogRead(X_pin));
Serial.print("\n");
Serial.print("Axe Y : ");
Serial.println(analogRead(Y_pin));
Serial.print("\n\n");
delay(500);
}
Avec le moniteur série, vous pouvez lire les valeurs actuelles.
Lorsque le joystick est au centre (position de repos), il doit afficher une valeur d'environ 512. Lorsqu'un axe est déplacé, la valeur varie de 0 à 1023