Arduino Nano ESP32 - Joystick
Dans ce tutoriel, nous allons apprendre à utiliser un joystick avec un Arduino Nano ESP32. En détail, nous apprendrons :
- Comment fonctionne un joystick
- Comment connecter un joystick à Arduino Nano ESP32 et programmer pour celui-ci
- Comment convertir les valeurs d'un joystick en valeurs contrôlables telles que les coordonnées XY, la direction du moteur haut/bas/gauche/droite...
Préparation du matériel
1 | × | Arduino Nano ESP32 | |
1 | × | USB Cable Type-C | |
1 | × | Joystick | |
1 | × | Breadboard | |
1 | × | Jumper Wires | |
1 | × | (Optional) DC Power Jack | |
1 | × | (Recommended) Screw Terminal Adapter for Arduino Nano |
Or you can buy the following sensor kits:
1 | × | DIYables Sensor Kit (30 sensors/displays) | |
1 | × | DIYables Sensor Kit (18 sensors/displays) |
À propos du capteur de joystick
Vous voyez probablement le joystick quelque part, comme sur une manette de jeu, une télécommande de jouet ou même sur une grosse machine réelle comme une commande d'excavatrice.
Le joystick se compose de deux potentiomètres disposés perpendiculairement l'un à l'autre et d'un bouton-poussoir. Par conséquent, il fournit les sorties suivantes :
- Une valeur analogique (de 0 à 4095) correspondant à la position horizontale (appelée coordonnée X)
- Une valeur analogique (de 0 à 4095) correspondant à la position verticale (appelée coordonnée Y)
- Une valeur numérique d'un bouton-poussoir (HAUT ou BAS)
La combinaison de deux valeurs analogiques peut créer des coordonnées 2D dont les valeurs centrales sont celles lorsque le joystick est en position de repos. La direction réelle des coordonnées peut être facilement identifiée en exécutant un code de test (dans la partie suivante).
Certaines applications peuvent utiliser les trois sorties, tandis que d'autres peuvent en utiliser seulement certaines.
Brochage
Un joystick a 5 broches :
- Broche GND : doit être connectée à GND (0V)
- Broche VCC : doit être connectée à VCC (3.3V)
- Broche VRX : fournit une valeur analogique correspondant à la position horizontale (appelée coordonnée X).
- Broche VRY : fournit une valeur analogique correspondant à la position verticale (appelée coordonnée Y).
- Broche SW : est la sortie du bouton-poussoir à l'intérieur du joystick. Elle est normalement ouverte. Si nous utilisons une résistance de tirage sur cette broche, la broche SW sera HAUTE quand elle n'est pas pressée et BASSE quand elle est pressée.
Comment ça marche
- Lorsque vous poussez le pouce du joystick vers la gauche/droite, la tension dans la broche VRX change. La plage de tension est de 0 à 3,3V (0 à gauche et 3,3V à droite). La valeur de tension est proportionnelle à la position du pouce ⇒ La valeur lue sur la broche analogique de l'ESP32 varie de 0 à 4095.
- Lorsque vous poussez le pouce du joystick vers le haut/bas, la tension dans la broche VRY change. La plage de tension est de 0 à 3,3V (0 en haut et 3,3V en bas). La valeur de tension est proportionnelle à la position du pouce ⇒ La valeur lue sur la broche analogique de l'ESP32 varie de 0 à 4095.
- Lorsque vous poussez le pouce du joystick dans n'importe quelle direction, la tension dans les broches VRX et VRY change proportionnellement à la projection de la position sur chaque axe.
- Lorsque vous poussez le pouce du joystick de haut en bas, le bouton-poussoir à l'intérieur du joystick se ferme. Si nous utilisons une résistance de tirage sur la broche SW, la sortie de la broche SW passe de 3,3V à 0V ⇒ La valeur lue sur la broche numérique de l'ESP32 passe de HAUT à BAS.
Diagramme de câblage
This image is created using Fritzing. Click to enlarge image
Comment programmer pour un joystick
Le joystick comporte deux parties : analogique (axes X, Y) et numérique (bouton-poussoir).
- Pour les parties analogiques (axes X, Y), il suffit de lire la valeur à partir de la broche d'entrée analogique en utilisant la fonction analogRead().
- Pour la partie numérique (bouton-poussoir) : il s'agit d'un bouton. La manière la plus simple et la plus pratique est d'utiliser la bibliothèque ezButton. Cette bibliothèque prend en charge l'anti-rebond pour les boutons et active également une résistance de tirage interne. Vous pouvez en savoir plus sur les boutons dans le tutoriel Arduino Nano ESP32 - Bouton. Le code sera présenté dans la prochaine session de ce tutoriel.
Après avoir lu les valeurs des broches analogiques, nous devons peut-être les convertir en valeurs contrôlables. La prochaine partie fournira les codes d'exemple pour cela.
Code Arduino Nano ESP32
Cette section fournira les exemples de codes suivants pour Arduino Nano ESP32 :
- Exemple de code : lit les valeurs analogiques d'un joystick
- Exemple de code : lit les valeurs analogiques et l'état du bouton d'un joystick
- Exemple de code : convertit une valeur analogique en commandes MOVE_LEFT, MOVE_RIGHT, MOVE_UP, MOVE_DOWN
- Exemple de code : convertit les valeurs analogiques en angles pour contrôler deux moteurs servo (par exemple dans une caméra panoramique/inclinable)
Lit les valeurs analogiques du joystick
Étapes rapides
Pour commencer avec l'Arduino Nano ESP32, suivez ces étapes :
- Si vous êtes nouveau avec l'Arduino Nano ESP32, consultez le tutoriel sur comment configurer l'environnement pour Arduino Nano ESP32 dans l'Arduino IDE.
- Connectez les composants selon le schéma fourni.
- Connectez la carte Arduino Nano ESP32 à votre ordinateur à l'aide d'un câble USB.
- Lancez l'Arduino IDE sur votre ordinateur.
- Sélectionnez la carte Arduino Nano ESP32 et le port COM correspondant.
- Copiez le code ci-dessus et ouvrez-le avec Arduino IDE
- Cliquez sur le bouton Upload sur Arduino IDE pour charger le code sur Arduino Nano ESP32
- Poussez le pouce du joystick au maximum jusqu'à la limite, puis faites-le tourner en cercle (dans le sens des aiguilles d'une montre ou dans le sens inverse).
- Vérifiez le résultat sur le moniteur série.
- En tournant le pouce du joystick, continuez de surveiller le moniteur série.
- Si la valeur X est 0, marquez ou mémorisez la position actuelle comme gauche ⇒ la direction opposée est la droite.
- Si la valeur Y est 0, marquez ou mémorisez la position actuelle comme haut ⇒ la direction opposée est le bas.
- Ouvrez le Gestionnaire de bibliothèques en cliquant sur l'icône Gestionnaire de bibliothèques dans la barre de navigation de gauche de l'Arduino IDE
- Recherchez “ezButton”, puis trouvez la bibliothèque de boutons par ArduinoGetStarted.com
- Cliquez sur le bouton Install pour installer la bibliothèque ezButton.
- Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
- Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code vers l'Arduino Nano ESP32
- Poussez le pouce du joystick à gauche/droite/haut/bas
- Poussez le pouce du joystick depuis le haut
- Vérifiez le résultat sur le moniteur série.
- Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
- Cliquez sur le bouton Upload de l'IDE Arduino pour téléverser le code sur Arduino Nano ESP32
- Poussez le pouce du joystick vers la gauche/droite/haut/bas ou dans n'importe quelle direction
- Vérifiez le résultat sur le moniteur série.
Lit les valeurs analogiques et l'état du bouton d'un joystick.
Étapes rapides
Convertit la valeur analogique en commandes GAUCHE/DROITE/HAUT/BAS
Étapes rapides
※ NOTE THAT:
À un moment donné, il peut n'y avoir aucun ordre, un ordre ou deux ordres (par exemple, HAUT et GAUCHE en même temps)
Convertit des valeurs analogiques en angles pour contrôler deux moteurs servo.
Le détail est présenté dans le tutoriel Arduino Nano ESP32 - Le joystick contrôle le moteur servo.