Joystick analogique Arduino

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:

  1. Comment connecter servomoteur avec Arduino
  2. Branchement module potentiomètre Arduino
  3. Jeu Arduino avec LEDs «Répétez la séquence»

Utilisation d’un joystick avec Arduino

Joystick analogique 2 axes Arduino datacheet
Joystick analogique 2 axes Arduino datacheet

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

Connecter joystick analogique acec Arduino
Comment connecter un joystick analogique acec Arduino

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:

  1. 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.
Comment contrôle LED avec joystick Arduino
Comment contrôle LED avec joystick Arduino

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:

  1. avec map(), vous pouvez spécifier n’importe quelle plage de nombres;
  2. veuillez noter que le brochage du joystick peut varier d’un fabricant à l’autre.
Comment contrôle servomoteur avec joystick Arduino
Comment contrôle servomoteur avec joystick Arduino

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:

  1. 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

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. Découvrez comment les données de vos commentaires sont traitées.