Un joystick est un périphérique d'entrée qui permet de contrôler des objets ou des mouvements dans un environnement virtuel ou physique, souvent utilisé dans les jeux vidéo, la robotique, ou le contrôle d'équipements électroniques.
1- Structure de base :
Manche (Stick) : Une tige qui peut être inclinée dans différentes directions.
Base : Support fixe où le manche est monté.
Boutons : Parfois intégrés sur le manche ou sur la base pour des actions supplémentaires.
2- Axes de mouvement :
Axes X et Y : Contrôlent le mouvement horizontal (gauche-droite) et vertical (haut-bas).
Certains joysticks incluent un axe Z (rotation) ou des boutons analogiques pour des mouvements supplémentaires.
3- Capteur interne :
Utilise des potentiomètres, des capteurs à effet Hall, ou d'autres capteurs pour mesurer la position du manche.
Ces données sont converties en signaux électroniques pour être interprétées par un microcontrôleur ou un logiciel.
4- Analogique vs Numérique :
Analogique : Fournit des valeurs continues pour une précision accrue.
Numérique : Fournit des valeurs discrètes (ex. gauche, droite, haut, bas).
Jeux vidéo : Contrôle des personnages, véhicules, ou interfaces dans des jeux.
Robotique : Contrôle de bras robotiques ou de robots mobiles.
Simulation : Entraînement pour les pilotes ou conducteurs.
Accessibilité : Permet aux personnes ayant des difficultés motrices d'interagir avec des systèmes informatiques.
Commander un joystick à l'aide d'une carte Arduino et afficher ses directions sur un afficheur LCD I2C consiste à lire les valeurs analogiques des axes X et Y du joystick, à déterminer la direction (haut, bas, gauche, droite ou centre) et à envoyer ces informations à l'écran LCD.
1- Joystick :
Le joystick est équipé de deux potentiomètres :
L'axe X mesure les mouvements horizontaux (gauche/droite).
L'axe Y mesure les mouvements verticaux (haut/bas).
Il génère des valeurs analogiques allant de 0 à 1023.
Lorsque le joystick est au repos (position centrale), les valeurs sont proches de 512.
Un bouton intégré détecte une pression (valeur numérique LOW ou HIGH).
2- Arduino :
L'Arduino lit les valeurs analogiques des axes X et Y à l'aide des pins A0 et A1.
Il traite ces valeurs pour identifier la direction (haut, bas, gauche, droite ou centre).
Il envoie la direction à l'écran LCD I2C via les pins SDA et SCL.
3- Afficheur LCD I2C :
L'écran affiche le texte correspondant à la direction détectée.
La carte Arduino peut être utilisée pour commander un joystick et un afficheur LCD afin de créer des applications interactives. Voici une explication détaillée des composants nécessaires :
Arduino Uno
Le microcontrôleur qui va contrôler le Joystick et l'afficheur LCD.
Joystick
Le joystick analogique est composé de deux potentiomètres (axes X et Y) et parfois d'un bouton-poussoir (cliquable).
Afficheur LCD I2C 16x2
Un afficheur LCD (comme un 16x2) est utilisé pour afficher les données lues du joystick, comme les directions de la manette.
Câbles de Connexion (Jumper Wires)
Pour relier les broches de la carte Arduino aux broches du Joystick et l'afficheur LCD.
Axes VRx et VRx : Connectés à deux entrées analogiques de l'Arduino (par exemple, A0 pour VRx et A1 pour VRx).
Bouton-poussoir : Connecté à une entrée numérique (par exemple, D2).
Alimentation :
+5V : Connecté au 3V3 de l'Arduino.
GND : Connecté au GND de l'Arduino.
Connexion de l'afficheur LCD :
Connecter SDA et SCL du module LCD aux broches A4 (SDA) et A5 (SCL) de l’Arduino.
Connecter La broche VCC à 5V de l’Arduino
Connecter La broche GND au GND de l’Arduino
Voici un exemple d'utilisation où l'Arduino lit les valeurs du joystick et les affiche sur le LCD :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#include <LiquidCrystal_I2C.h> //—– Adressage matériel —– // En cas de non fonctionnement, mettez la ligne 8 en // commentaire et retirez le commentaire à la ligne 9. LiquidCrystal_I2C lcd(0x27, 20, 4); int VRx = A0; int VRy = A1; int SW = 2; int xPosition = 0; int yPosition = 0; int SW_state = 0; int mapX = 0; int mapY = 0; void setup() { lcd.init(); // initialisation de l’afficheur pinMode(VRx, INPUT); pinMode(VRy, INPUT); pinMode(SW, INPUT_PULLUP); } void loop() { lcd.backlight(); lcd.clear(); // effacer le contenu de l’Afficheur LCD xPosition = analogRead(VRx); yPosition = analogRead(VRy); SW_state = digitalRead(SW); mapX = map(xPosition, 0, 1023, -512, 512); mapY = map(yPosition, 0, 1023, -512, 512); if ((mapX>=-515)&& (mapX<=-510)&&(mapY>=-175)&& (mapY<=-168)) lcd.print("Avant"); if ((mapX>=168)&& (mapX<=175)&&(mapY>=-175)&& (mapY<=-168)) lcd.print("Arriere"); if ((mapX<=-166)&& (mapX>=-175)&&(mapY>=-515)&& (mapY<=-510)) lcd.print("Droite"); if ((mapX>=-175)&& (mapX<=-170)&&(mapY>=165)&& (mapY<=175)) lcd.print("Gauche"); if (SW_state==0) lcd.print("Bouton appuye"); delay(1000); } |
Le but de ce programme est d'afficher le sens de la direction de la manette Joystick sur un afficheur LCD avec Arduino:
1- Lorsque l’utilisateur dirige la manette Joystick vers la droite, on affiche le mot “Droite”.
2- Lorsque l’utilisateur dirige la manette Joystick vers la gauche, on affiche le mot “Gauche”.
3- Lorsque l’utilisateur dirige la manette Joystick vers l’avant, on affiche le mot “Avant”.
4- Lorsque l’utilisateur dirige la manette Joystick vers l’arrière, on affiche le mot “Arriere” .
5- Lorsque l’utilisateur appuie sur le bouton de la manette Joystick , on affiche le mot “bouton appuye”.
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali-Prof Info