ESP32 C3 Super Mini - Joystick

Apprenez à connecter et programmer un module joystick avec votre carte ESP32 C3 Super Mini. Ce didacticiel convivial pour les débutants couvre tout, du câblage à la lecture des valeurs analogiques et à leur conversion en commandes de contrôle.

Dans ce didacticiel joystick ESP32 C3 Super Mini, vous apprendrez:

Joystick Pinout

Matériel requis

1×ESP32 C3 Super Mini
1×Câble USB Type-C
1×Joystick
1×Plaque d'essai
1×Câbles Jumper
1×(Optionnel) Connecteur d'alimentation CC

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du capteur joystick

Le capteur joystick est un module d'entrée analogique qui détecte la position dans deux dimensions et inclut un bouton-poussoir intégré.

Caractéristiques clés du module joystick:

  • Deux potentiomètres internes positionnés perpendiculairement l'un à l'autre
  • Génère la coordonnée X en valeur analogique (0 à 4095 sur l'ESP32)
  • Génère la coordonnée Y en valeur analogique (0 à 4095 sur l'ESP32)
  • Bouton-poussoir intégré pour la détection de clic
  • Crée des coordonnées 2D basées sur la position du joystick
  • Les valeurs de position centrale représentent l'état de repos
  • Couramment utilisé dans les contrôleurs de jeux, les jouets RC et les contrôles de machines
  • Parfait pour l'entrée directionnelle dans les projets Arduino et ESP32
  • Convivial pour les débutants avec des fonctions de lecture analogique simples

Brochage

Le module joystick possède 5 broches pour se connecter à votre ESP32 C3 Super Mini:

  • GND: Connectez à la masse (0V)
  • VCC: Connectez à l'alimentation (3.3V)
  • VRX: Sortie analogique pour la position horizontale (axe X)
  • VRY: Sortie analogique pour la position verticale (axe Y)
  • SW: Sortie numérique du bouton-poussoir interne (normalement HIGH avec résistance pull-up, LOW lorsqu'il est enfoncé)
Joystick Pinout

Fonctionnement

Mouvement de l'axe X (gauche/droite):

  • Le déplacement du joystick à gauche/droite modifie la tension sur la broche VRX
  • La tension varie de 0V (gauche) à 3.3V (droite)
  • L'ESP32 C3 Super Mini lit les valeurs analogiques de 0 à 4095
  • La valeur est proportionnelle à la position horizontale du pouce

Mouvement de l'axe Y (haut/bas):

  • Le déplacement du joystick vers le haut/bas modifie la tension sur la broche VRY
  • La tension varie de 0V (haut) à 3.3V (bas)
  • L'ESP32 C3 Super Mini lit les valeurs analogiques de 0 à 4095
  • La valeur est proportionnelle à la position verticale du pouce

Mouvement diagonal:

  • Les tensions VRX et VRY changent simultanément
  • Chaque axe génère proportionnellement à la projection de position
  • Crée des coordonnées 2D fluides pour n'importe quelle direction

Fonction du bouton-poussoir:

  • Appuyez sur le joystick vers le bas pour activer le bouton interne
  • Avec une résistance pull-up, la broche SW génère 3.3V normalement
  • L'appui sur le bouton tire la broche SW à 0V (GND)
  • L'ESP32 lit HIGH lorsqu'il est relâché, LOW lorsqu'il est enfoncé

Schéma de câblage

Connectez votre module joystick à l'ESP32 C3 Super Mini en suivant ce schéma de câblage:

ESP32 C3 Super Mini Joystick Wiring Diagram

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Tableau de connexion:

Joystick Pin ESP32 C3 Super Mini Pin
GND GND
VCC 3.3V
VRX A1
VRY A0
SW D10

Comment programmer pour le joystick

Le joystick comporte deux composants de programmation à gérer avec votre ESP32 C3 Super Mini:

Lecture des axes analogiques (coordonnées X, Y):

  • Utilisez la fonction analogRead() pour les broches VRX et VRY
  • Retourne des valeurs de 0 à 4095 sur l'ESP32 C3 Super Mini
  • Lecture simple d'une ligne pour chaque axe
int valueX = analogRead(A1); int valueY = analogRead(A0);

Lecture du bouton numérique (broche SW):

  • Traitez comme une entrée de bouton-poussoir standard
  • Utilisez la bibliothèque ezButton pour le débottage facile
  • La bibliothèque active automatiquement la résistance pull-up interne
  • Voir ESP32 C3 Super Mini - Bouton pour les détails
  • Les exemples de code de bouton sont fournis dans les sections suivantes

Conversion des valeurs en commandes:

  • Les valeurs analogiques brutes peuvent nécessiter une conversion pour les applications de contrôle
  • Convertissez en commandes directionnelles (HAUT, BAS, GAUCHE, DROITE)
  • Mappez à des angles de servo pour les mécanismes pan-tilt
  • Mettez à l'échelle les valeurs de vitesse du moteur
  • Les codes d'exemple de conversion sont fournis ci-dessous

Code ESP32 C3 Super Mini

Cette section fournit plusieurs exemples de joystick ESP32 C3 Super Mini:

Ce que ces exemples de code démontrent:

  • Lecture des valeurs analogiques X et Y depuis le joystick
  • Lecture des valeurs analogiques plus l'état du bouton-poussoir
  • Conversion des lectures analogiques en commandes directionnelles
  • Mappage de la position du joystick aux angles du servo moteur
  • Applications pratiques pour le contrôle de jeux et de robots

Lit les valeurs analogiques du joystick

/* * Ce code ESP32 C3 Super Mini a été développé par newbiely.fr * Ce code ESP32 C3 Super Mini est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-c3/esp32-c3-super-mini-joystick */ #define VRX_PIN A1 // The ESP32 C3 SuperMini pin connected to VRX pin #define VRY_PIN A0 // The ESP32 C3 SuperMini pin connected to VRY pin int valueX = 0; // to store the X-axis value int valueY = 0; // to store the Y-axis value void setup() { Serial.begin(115200); // Set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); } void loop() { // read X and Y analog values valueX = analogRead(VRX_PIN); valueY = analogRead(VRY_PIN); // print data to Serial Monitor on Arduino IDE Serial.print("x = "); Serial.print(valueX); Serial.print(", y = "); Serial.println(valueY); delay(200); }

Étapes rapides

  • Nouveau sur ESP32 C3 Mini? Complétez d'abord notre didacticiel ESP32 C3 Super Mini - Premiers pas pour configurer votre environnement de développement.
  • Câblez les composants: Suivez le schéma de câblage ci-dessus pour connecter le joystick à votre ESP32 C3 Super Mini.
  • Connectez la carte: Branchez votre ESP32 C3 Super Mini sur votre ordinateur à l'aide d'un câble USB Type-C.
  • Ouvrez l'IDE Arduino: Lancez l'IDE Arduino sur votre ordinateur.
  • Sélectionnez la carte et le port: Choisissez l'ESP32 C3 Super Mini dans le menu des cartes et sélectionnez le port COM correct.
  • Téléchargez le code: Copiez le code ci-dessus, collez-le dans l'IDE Arduino et cliquez sur le bouton Télécharger.
  • Testez le joystick: Poussez le pouce du joystick au maximum dans toutes les directions.
  • Faites pivoter le joystick: Déplacez le pouce en cercle complet (sens des aiguilles d'une montre ou inversement).
  • Ouvrez le Moniteur série: Vérifiez la sortie pour voir les valeurs des coordonnées X et Y.
  • Identifiez les directions: Regardez le Moniteur série pendant la rotation pour identifier les positions correspondant à gauche/droite/haut/bas (X=0 est gauche, Y=0 est haut).
  • Conseil professionnel: Marquez la base du joystick avec des flèches indiquant les directions des coordonnées pour une référence facile dans les projets futurs.
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
X: 2048, Y: 2012 X: 3890, Y: 2015 X: 4095, Y: 2456 X: 3876, Y: 3920 X: 2034, Y: 4095 X: 245, Y: 3905 X: 0, Y: 2467 X: 212, Y: 134 X: 2048, Y: 0 X: 3845, Y: 189 X: 2056, Y: 2018
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

※ Note:

Vous remarquerez peut-être que les valeurs analogiques ne sont pas parfaitement linéaires avec le mouvement du joystick. Ceci est dû aux caractéristiques du convertisseur analogique-numérique de l'ESP32 C3 Super Mini, et non du joystick lui-même. Voir la note d'étalonnage du convertisseur analogique-numérique à la fin de ce didacticiel pour plus d'informations.

Lit les valeurs analogiques et lit l'état du bouton depuis un joystick

/* * Ce code ESP32 C3 Super Mini a été développé par newbiely.fr * Ce code ESP32 C3 Super Mini est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-c3/esp32-c3-super-mini-joystick */ #include <ezButton.h> #define VRX_PIN A1 // The ESP32 C3 SuperMini pin connected to VRX pin #define VRY_PIN A0 // The ESP32 C3 SuperMini pin connected to VRY pin #define SW_PIN 10 // The ESP32 C3 SuperMini pin connected to SW pin ezButton button(SW_PIN); int valueX = 0; // to store the X-axis value int valueY = 0; // to store the Y-axis value int bValue = 0; // To store value of the button void setup() { Serial.begin(115200); // Set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first // read X and Y analog values valueX = analogRead(VRX_PIN); valueY = analogRead(VRY_PIN); // Read the button value bValue = button.getState(); if (button.isPressed()) { Serial.println("The button is pressed"); // TODO do something here } if (button.isReleased()) { Serial.println("The button is released"); // TODO do something here } // print data to Serial Monitor on Arduino IDE Serial.print("x = "); Serial.print(valueX); Serial.print(", y = "); Serial.print(valueY); Serial.print(" : button = "); Serial.println(bValue); }

Étapes rapides

  • Installez la bibliothèque ezButton: Cliquez sur l'icône du Gestionnaire de bibliothèques dans la barre de navigation gauche de l'IDE Arduino.
  • Recherchez la bibliothèque: Tapez "ezButton" dans la zone de recherche.
  • Trouvez la bibliothèque: Localisez la bibliothèque de boutons par ArduinoGetStarted.com.
  • Installez: Cliquez sur le bouton Installer pour ajouter la bibliothèque ezButton à votre IDE Arduino.
  • Search for ezButton created by ArduinoGetStarted.com and click the Install button.
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Library Manager
Type:
All
Topic:
All
ezButton by ArduinoGetStarted.com
Button library supports debounce, pressed/released events and the press counting. It is easy to use with multiple buttons. The library can be used for push-button, momentary switches, toggle switch, magnetic contact switch (door sensor)... It is designed for not only beginners but also experienced users. More info
1.0.6
INSTALL
Newbiely.ino
···
1 void setup() {
Output
Serial Monitor
Ln 1, Col 1
ESP32C3 Dev Module on COM15
1
  • Téléchargez le code: Copiez le code ci-dessus dans l'IDE Arduino et cliquez sur Télécharger.
  • Testez le mouvement X/Y: Poussez le pouce du joystick à gauche, à droite, vers le haut et vers le bas.
  • Testez le bouton: Appuyez sur le pouce du joystick vers le bas par le haut pour activer le bouton.
  • Affichez les résultats: Ouvrez le Moniteur série pour voir les valeurs X, Y et les changements d'état du bouton.
  • Conseil professionnel: La bibliothèque ezButton gère automatiquement le débottage, vous donnant une détection de pression de bouton nette sans code supplémentaire.
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
x = 2048, y = 2012, button: RELEASED x = 3890, y = 2015, button: RELEASED x = 4095, y = 2456, button: RELEASED x = 2034, y = 4095, button: RELEASED x = 2034, y = 4095, button: PRESSED x = 245, y = 3905, button: PRESSED x = 0, y = 2467, button: RELEASED x = 212, y = 134, button: RELEASED x = 2048, y = 0, button: RELEASED x = 2056, y: 2018, button: RELEASED
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

Convertit la valeur analogique en commandes DÉPLACER GAUCHE/DROITE/HAUT/BAS

/* * Ce code ESP32 C3 Super Mini a été développé par newbiely.fr * Ce code ESP32 C3 Super Mini est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-c3/esp32-c3-super-mini-joystick */ #define VRX_PIN A1 // The ESP32 C3 SuperMini pin connected to VRX pin #define VRY_PIN A0 // The ESP32 C3 SuperMini pin connected to VRY pin #define LEFT_THRESHOLD 1000 #define RIGHT_THRESHOLD 3000 #define UP_THRESHOLD 1000 #define DOWN_THRESHOLD 3000 #define COMMAND_NO 0x00 #define COMMAND_LEFT 0x01 #define COMMAND_RIGHT 0x02 #define COMMAND_UP 0x04 #define COMMAND_DOWN 0x08 int valueX = 0 ; // to store the X-axis value int valueY = 0 ; // to store the Y-axis value int command = COMMAND_NO; void setup() { Serial.begin(115200); // Set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); } void loop() { // read X and Y analog values valueX = analogRead(VRX_PIN); valueY = analogRead(VRY_PIN); // converts the analog value to commands // reset commands command = COMMAND_NO; // check left/right commands if (valueX < LEFT_THRESHOLD) command = command | COMMAND_LEFT; else if (valueX > RIGHT_THRESHOLD) command = command | COMMAND_RIGHT; // check up/down commands if (valueY < UP_THRESHOLD) command = command | COMMAND_UP; else if (valueY > DOWN_THRESHOLD) command = command | COMMAND_DOWN; // NOTE: AT A TIME, THERE MAY BE NO COMMAND, ONE COMMAND OR TWO COMMANDS // print command to serial and process command if (command & COMMAND_LEFT) { Serial.println("COMMAND LEFT"); // TODO: add your task here } if (command & COMMAND_RIGHT) { Serial.println("COMMAND RIGHT"); // TODO: add your task here } if (command & COMMAND_UP) { Serial.println("COMMAND UP"); // TODO: add your task here } if (command & COMMAND_DOWN) { Serial.println("COMMAND DOWN"); // TODO: add your task here } }

Étapes rapides

  • Téléchargez le code: Copiez le code de conversion de commande dans l'IDE Arduino et cliquez sur Télécharger.
  • Déplacez le joystick: Poussez le pouce dans différentes directions - gauche, droite, haut, bas et diagonal.
  • Vérifiez le Moniteur série: Ouvrez le Moniteur série pour voir les sorties de commande directionnelles.
  • Testez les diagonales: Déplacez-vous aux coins pour voir plusieurs commandes simultanées (par exemple, "HAUT + GAUCHE").
  • Conseil professionnel: Ajustez les valeurs de seuil dans le code pour rendre le joystick plus ou moins sensible à vos mouvements.
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
COMMAND: MOVE RIGHT COMMAND: MOVE RIGHT, MOVE DOWN COMMAND: MOVE DOWN COMMAND: MOVE DOWN, MOVE LEFT COMMAND: MOVE LEFT COMMAND: MOVE LEFT, MOVE UP COMMAND: MOVE UP COMMAND: MOVE UP, MOVE RIGHT (No command - centered) COMMAND: MOVE RIGHT
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

※ Note:

Le joystick peut générer zéro, une ou deux commandes simultanément. Par exemple, lorsqu'il est poussé vers le coin supérieur gauche, il génère à la fois "DÉPLACER HAUT" et "DÉPLACER GAUCHE" en même temps, idéal pour le mouvement diagonal dans les jeux et les robots.

Convertit les valeurs analogiques en angles pour contrôler deux servo moteurs

Pour des instructions détaillées sur le contrôle des servo moteurs avec votre joystick ESP32 C3 Super Mini, voir le didacticiel complet: ESP32 C3 Super Mini - Joystick contrôle Servo Motor

Ce que vous apprendrez dans le didacticiel du servo:

  • Mappage des valeurs X/Y du joystick aux angles du servo (0-180 degrés)
  • Contrôle des mécanismes de caméra pan-tilt
  • Construction de commandes de bras robotique interactif
  • Réponse du servo en temps réel au mouvement du joystick

※ Note:

Informations importantes sur la précision du convertisseur analogique-numérique:

Ce didacticiel utilise la fonction analogRead() pour lire les valeurs d'un convertisseur analogique-numérique (ADC) connecté à un capteur ou à un composant. Le convertisseur analogique-numérique de l'ESP32 C3 Super Mini convient aux projets qui ne nécessitent pas une haute précision. Cependant, pour les projets nécessitant des mesures précises, gardez à l'esprit les points suivants:

  • Le convertisseur analogique-numérique de l'ESP32 C3 Super Mini n'est pas parfaitement précis et peut nécessiter un étalonnage pour les résultats corrects. Chaque carte ESP32 C3 Super Mini peut varier légèrement, donc un étalonnage est nécessaire pour chaque carte individuelle.
  • L'étalonnage peut être difficile, surtout pour les débutants, et ne donne pas toujours les résultats exacts que vous souhaitez.

Pour les projets nécessitant une haute précision, envisagez d'utiliser un convertisseur analogique-numérique externe (par exemple ADS1115) avec l'ESP32 C3 Super Mini ou d'utiliser un autre Arduino, tel que l'Arduino Uno R4 WiFi, qui dispose d'un convertisseur analogique-numérique plus fiable. Si vous souhaitez toujours étalonner le convertisseur analogique-numérique de l'ESP32 C3 Super Mini, consultez le pilote d'étalonnage du convertisseur analogique-numérique ESP32.

Idées d'application et de projet

Utilisez votre configuration joystick ESP32 C3 Super Mini dans ces projets passionnants:

  • Construisez une voiture RC sans fil avec contrôle directionnel
  • Créez un système de caméra pan-tilt pour le suivi vidéo
  • Concevez un contrôleur de jeu pour les jeux basés sur Arduino
  • Contrôlez un bras robotique avec des mouvements intuitifs du joystick
  • Fabriquez une interface de contrôleur de drone de vol
  • Construisez un système de contrôle de joystick pour fauteuil roulant électrique
  • Créez une console de jeu de style arcade
  • Concevez un slider de caméra avec contrôle de positionnement précis

Didacticiel vidéo

Regardez la vidéo ci-dessous pour une démonstration visuelle de ce projet.

Défiez-vous

Testez vos compétences en joystick ESP32 C3 Super Mini avec ces défis:

  • Facile: Ajoutez des indicateurs LED qui s'allument en fonction de la direction du joystick (4 LED pour haut/bas/gauche/droite).
  • Facile: Affichez les valeurs X et Y du joystick sur un écran OLED ou LCD au lieu du Moniteur série.
  • Moyen: Créez un programme de dessin qui trace les mouvements du joystick sur un affichage OLED en temps réel.
  • Moyen: Ajoutez un contrôle de vitesse en mappant la distance du joystick par rapport au centre aux valeurs de vitesse du moteur.
  • Avancé: Construisez un contrôleur joystick sans fil utilisant ESP-NOW pour contrôler un autre ESP32 à distance.
  • Avancé: Implémentez la reconnaissance de gestes qui détecte les modèles de mouvement de joystick spécifiques (cercles, figure-8s, etc.).

Références de fonction

Commentaires

Tutoriels connexes

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !