- Matériel requis
- Schéma
- Module joystick
- Code et explication
- Contrôle des LED à l'aide du joystick avec Arduino
La première chose qui nous vient à l'esprit en écoutant le mot Joystick est le contrôleur de jeu. Oui, c'est exactement la même chose et peut être utilisé à des fins de jeu. Outre les jeux, il a de nombreuses autres applications dans l'électronique de bricolage. Ce joystick n'est rien d'autre qu'une combinaison de deux potentiomètres pour les plans X et Y respectivement. Il lit la tension à travers le potentiomètre et donne une valeur analogique à l'Arduino, et la valeur analogique change lorsque nous déplaçons l'arbre du joystick (qui est simplement le pointeur du potentiomètre).
Dans ce circuit, nous interfaçons Joystick avec Arduino simplement en contrôlant quatre LED selon le mouvement du Joystick. Nous avons placé 4 LED de telle manière qu'elles représentent la direction du mouvement de l'axe du joystick. Ce joystick dispose également d'un bouton poussoir qui peut être utilisé à diverses autres fins ou peut être laissé au repos. Une seule LED est également attachée à l'interrupteur du joystick, car le bouton du joystick appuyé sur cette seule LED s'allumera.
Matériel requis
- Arduino UNO
- Module joystick
- LED-5
- Résistance: 100ohm-3
- Fils de connexion
- Planche à pain
Schéma
Module joystick
Les joysticks sont disponibles en différentes formes et tailles. Un module Joystick typique est illustré dans la figure ci-dessous. Ce module Joystick fournit généralement des sorties analogiques et les tensions de sortie fournies par ce module changent en fonction de la direction dans laquelle nous le déplaçons. Et nous pouvons obtenir la direction du mouvement en interprétant ces changements de tension à l'aide d'un microcontrôleur. Auparavant, nous avons interfacé Joystick avec AVR et Raspberry Pi.
Ce module de joystick a deux axes comme vous pouvez le voir. Ce sont les axes X et Y. Chaque axe du JOYSTICK est monté sur un potentiomètre ou un pot. Les milieux de ces pots sont chassés comme Rx et Ry. Donc Rx et Ry sont des points variables vers ces pots. Lorsque le joystick est en veille, Rx et Ry agissent comme un diviseur de tension.
Lorsque le joystick est déplacé le long de l'axe horizontal, la tension sur la broche Rx change. De même, lorsqu'il est déplacé le long de l'axe vertical, la tension sur la broche Ry change. Nous avons donc quatre directions de Joystick sur deux sorties ADC. Lorsque le bâton est déplacé, la tension sur chaque broche augmente ou diminue selon la direction.
Ici, nous connectons ce module Joystick avec l'Arduino UNO qui est livré avec un mécanisme ADC (convertisseur analogique-numérique) intégré, comme indiqué dans la vidéo à la fin. En savoir plus sur l'utilisation de l'ADC d'Arduino ici.
Code et explication
Le code Arduino complet est mentionné à la fin.
Dans le code ci-dessous, nous avons défini les axes X et Y du module Joystick pour les broches analogiques A0 et A1 respectivement.
#define joyX A0 #define joyY A1
Maintenant, dans le code ci-dessous, nous initialisons le PIN 2 d'Arduino pour le commutateur (bouton-poussoir) du module Joystick et la valeur de buttonstate et buttonstate1 sera 0 au début.
bouton int = 2; int buttonState = 0; int buttonState1 = 0;
Dans le code ci-dessous, nous configurons la vitesse de transmission à 9600 et définissons la broche 7 comme une broche de sortie et une broche de bouton comme une broche d'entrée. Au départ, la broche du bouton restera haute jusqu'à ce que le commutateur appuie.
void setup () {pinMode (7, OUTPUT); pinMode (bouton, INPUT); digitalWrite (bouton, HIGH); Serial.begin (9600); }
Ici, dans ce code, nous lisons les valeurs des broches analogiques A0 et A1 et imprimons en série.
int xValue = analogRead (joyX); int yValue = analogRead (joyY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
Les conditions pour allumer et éteindre la LED selon le mouvement de l' arbre du joystick sont définies dans le code ci-dessous. Ici, nous prenons simplement des valeurs analogiques de tension aux broches A0 et A1 d'Arduino. Ces valeurs analogiques changeront au fur et à mesure que nous bougerons le joystick et la LED s'allumera en fonction du mouvement du joystick.
Cette condition est pour le mouvement de l'arbre du joystick dans la direction de l'axe -Y
if (xValue> = 0 && yValue <= 10) {digitalWrite (10, HIGH); } else {digitalWrite (10, LOW);}
Cette condition est pour le mouvement de l'arbre du joystick dans la direction de l'axe -X
if (xValue <= 10 && yValue> = 500) {digitalWrite (11, HIGH); } else {digitalWrite (11, LOW);}
Cette condition est pour le mouvement de l'arbre du joystick dans la direction de l'axe + X
if (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } else {digitalWrite (9, LOW);}
Cette condition est pour le mouvement de l'arbre du joystick dans la direction de l'axe + Y
if (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } else {digitalWrite (8, LOW);}
Lorsque nous déplaçons l'arbre du joystick en diagonale, une position arrive lorsque la valeur analogique de X et Y sera respectivement de 1023 et 1023, les LED des broches 9 et 8 s'allumeront. Parce qu'il satisfait la condition de la LED. Donc, pour éliminer cette discordance, nous avons donné une condition que si la valeur de (X, Y) est (1023, 1023), les deux LED restent à l'état OFF
if (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, FAIBLE); }
La condition ci-dessous est utilisée pour faire fonctionner la LED connectée à l'interrupteur à bouton-poussoir. Lorsque nous appuyons sur le commutateur du joystick, la LED s'allume et se verrouille jusqu'à ce que le bouton se relâche. Il est facultatif d'utiliser l'interrupteur à bouton-poussoir sur le module Joystick.
if (buttonState == LOW) {Serial.println ("Switch = High"); digitalWrite (7, HIGH); } else {digitalWrite (7, LOW);}
Contrôle des LED à l'aide du joystick avec Arduino
Après avoir téléchargé le code sur l'Arduino et connecté les composants selon le schéma de circuit, nous pouvons maintenant contrôler les LED avec Joystick. Nous pouvons allumer les quatre LED dans chaque direction selon le mouvement de l'arbre du joystick. Le joystick a deux potentiomètres à l'intérieur, l'un est pour le mouvement sur l'axe X et l'autre pour le mouvement sur l'axe Y. Chaque potentiomètre reçoit 5v de l'Arduino. Ainsi, lorsque nous déplaçons le joystick, la valeur de tension changera et la valeur analogique sur les broches analogiques A0 et A1 changera également.
Ainsi, à partir de l'Arduino, nous lisons la valeur analogique pour les axes X et Y et allumons les LED selon le mouvement de l'axe du joystick. Un interrupteur à bouton-poussoir sur le module Joystick est utilisé pour contrôler la seule LED dans le circuit, comme indiqué dans la vidéo ci-dessous.