SOMMAIRE ►
Connecter un joystick à Arduino permet de réaliser un projet de contrôle à distance d’une voiture ou d’un robot (manipulateur) sur Arduino. Voyons comment connecter un joystick analogique (module KY-023) à un microcontrôleur et contrôler des LEDs ou un servo moteur avec un joystick 2 axes sur Arduino. Nous allons présenter quelques leы programmeы et schémas pour connecter le joystick 2 axes à un microcontrôleur Arduino Nano ou Uno.
Pour cette activité, nous aurons besoin:
- Arduino Uno / Arduino Nano / Arduino Mega
- joystick analogique 2 axes
- LEDs et résistances
- servo-moteur 3 points
- breadboard
- fils de connexion
Matériel supplémentaire sur ce sujet:
Utilisation d’un joystick avec Arduino

Le joystick analogique est un bouton monté sur une charnière avec deux potentiomètres qui déterminent la position du joystick sur les axes X et Y, et un bouton Z. L’inclinaison du bouton fait tourner les potentiomètres et modifie la tension de sortie, ce qui permet de contrôler le degré de déviation du bouton par rapport au point central. Lorsque le bouton du joystick analogique est relâché, il revient en douceur à la position centrale (zéro).
Le module joystick KY-023 a ses propres inconvénients. Le bouton du joystick ne revient pas toujours exactement à la position centrale, vous devez donc considérer la position centrale du bouton dans le programme comme une certaine plage de valeurs, plutôt que comme une valeur exacte. En d’autres termes, lorsque le bouton du joystick est centré, les valeurs des coordonnées X et Y peuvent être comprises entre 490 et 530 au lieu de 512.
Comment brancher joystick Arduino Uno

Après avoir connecté le joystick à l’Arduino, chargez le code suivant. Dans cet exemple, les données du joystick seront affichées sur le moniteur du port et la LED de la carte connectée en parallèle à la broche 13 s’éteindra lorsque le bouton sera enfoncé. Construisez le circuit du joystick sur l’Arduino Uno comme indiqué dans le schéma ci-dessus, chargez le programme et ouvrez le port série de l’application Arduino IDE sur l’ordinateur.
Programme Arduino pour joystick analogique
#define pinX A2 #define pinY A1 #define swPin 2 #define ledPin 13 void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); pinMode(pinX, INPUT); pinMode(pinY, INPUT); pinMode(swPin, INPUT); digitalWrite(swPin, HIGH); } void loop() { boolean ledState = digitalRead(swPin); digitalWrite(ledPin, ledState); int X = analogRead(pinX); int Y = analogRead(pinY); Serial.print(X); Serial.print("\t"); Serial.println(Y); }
Explication du code pour joystick analogique:
- en utilisant la fonction map(), vous pouvez spécifier n’importe quel intervalle, y compris l’intervalle inverse des nombres ou utiliser des valeurs négatives.

Vous pouvez maintenant compliquer le circuit en réalisant une commutation douce des LED commandée par le joystick. Pour ce faire, connectez deux LED via une résistance aux ports analogiques 5 et 6. Dans le schéma suivant, utilisez la fonction map() pour convertir les variables X et Y d’une plage de nombres de 0 à 1023 en une plage de nombres de 0 à 255. Connectez les LEDs aux broches 10 et 11 de l’Arduino et chargez le croquis suivant.
Programme Arduino contrôle LED avec joystick
#define pinX A2 #define pinY A1 #define swPin 2 #define ledPin 13 #define ledX 11 #define ledY 10 void setup() { pinMode(ledX, OUTPUT); pinMode(ledY, OUTPUT); pinMode(ledPin, OUTPUT); pinMode(pinX, INPUT); pinMode(pinY, INPUT); pinMode(swPin, INPUT); digitalWrite(swPin, HIGH); } void loop() { boolean ledState = digitalRead(swPin); digitalWrite(ledPin, ledState); int X = analogRead(pinX); int Y = analogRead(pinY); X = map(X, 0, 1023, 0, 255); Y = map(Y, 0, 1023, 0, 255); analogWrite(ledX, X); analogWrite(ledY, Y); }
Explication du code contrôle LED avec joystick:
- avec map(), vous pouvez spécifier n’importe quelle plage de nombres;
- veuillez noter que le brochage du joystick peut varier d’un fabricant à l’autre.

Afin de contrôler le servomoteur avec le joystick, la première chose à faire est de connecter le module ky-023 aux entrées analogiques de la carte Arduino. Ceci est nécessaire pour que l’ADC du microcontrôleur reçoive des données sur la position du joystick aux coordonnées X et Y en temps réel. Le CAN convertit les valeurs de tension de 0 à 5 volts en valeurs numériques. Ce sont ces valeurs que nous allons utiliser pour contrôler le servo-moteur.
Programme Arduino contrôle servo avec joystick
#define pinX A1 #include "Servo.h" Servo servo1; void setup() { pinMode(pinX, INPUT); servo1.attach(12); } void loop() { int X = analogRead(pinX); X = map(X, 0, 1023, 0, 180); servo1.write(X); }
Explication du code contrôle avec joystick moteur servo:
- la fonction map(), qui convertit la plage de valeurs numériques 0-1023, en une nouvelle plage de valeurs numériques 0-180 (angle de rotation du servomoteur).
Conclusion. Nous avons examiné le schéma de connexion du joystick à l’Arduino et plusieurs options pour contrôler les LED et moteur à partir du microcontrôleur. Comme vous avez pu le constater par vous-même, travailler avec le joystick Arduino est accessible à n’importe quel maker débutant car le principe du module ky-023 est similaire à un simple potentiomètre. Ce module peut être utilisé dans de nombreux DIY projets Arduino intéressants.








Laisser un commentaire