ESP32 S3 - Joystick
Apprenez à connecter et à programmer un module joystick avec votre carte ESP32 S3. Ce tutoriel vous guide à travers le câblage, la lecture des valeurs analogiques des deux axes, la détection des pressions de bouton, et la conversion des lectures brutes en commandes directionnelles.
Ce que vous allez construire :
- Un lecteur de joystick qui envoie les valeurs analogiques X et Y au Serial Monitor
- Un lecteur combiné de joystick et de bouton utilisant la bibliothèque ezButton
- Un convertisseur de commandes directionnelles (MOVE LEFT / RIGHT / UP / DOWN)
- Une base pour des projets de contrôle de servomoteur et de direction de robot

Matériel nécessaire
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Démarrage DIYables ESP32 S3 (ESP32 S3 inclus) | |
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
À propos du capteur joystick
Le capteur joystick est un module d'entrée analogique qui utilise deux potentiomètres internes montés perpendiculairement l'un à l'autre pour détecter une position sur deux dimensions. Il inclut aussi un bouton-poussoir intégré qui s'active quand l'axe du joystick est enfoncé. Sur l'ESP32 S3, les deux axes analogiques sont lus comme des valeurs de 0 à 4095, vous donnant un contrôle précis de la détection de mouvement.
Spécifications clés
Le joystick délivre la position de l'axe X sur la broche VRX et la position de l'axe Y sur la broche VRY, chacune comme une tension analogique entre 0V et 3,3V que l'ESP32 S3 convertit en un entier 12 bits (0 à 4095). La position de repos centrale de chaque axe se lit généralement près du point médian, autour de 2048. Le bouton-poussoir intégré sur la broche SW est normalement à HIGH lors de l'utilisation d'une résistance de tirage interne et passe à LOW quand l'axe du joystick est enfoncé. Le module est compatible avec une logique 3,3V, ce qui en fait un choix naturel pour l'ESP32 S3.
Brochage
Le module joystick a cinq broches pour la connexion à votre ESP32 S3 :
- 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 intégré (normalement HIGH avec résistance de tirage, LOW quand enfoncé)

Fonctionnement
Mouvement de l'axe X (gauche/droite) :
- Déplacer le joystick à gauche/droite change la tension sur la broche VRX
- La tension varie de 0V (gauche) à 3,3V (droite)
- L'ESP32 S3 lit des valeurs analogiques de 0 à 4095
- La valeur est proportionnelle à la position horizontale du pouce
Mouvement de l'axe Y (haut/bas) :
- Déplacer le joystick vers le haut/bas change la tension sur la broche VRY
- La tension varie de 0V (haut) à 3,3V (bas)
- L'ESP32 S3 lit des 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 délivre une sortie proportionnelle à la projection de la position
- Crée des coordonnées 2D fluides pour n'importe quelle direction
Fonction du bouton-poussoir :
- Enfoncez le joystick pour activer le bouton interne
- Avec une résistance de tirage, la broche SW délivre 3,3V normalement
- Appuyer sur le bouton amène la broche SW à 0V (GND)
- L'ESP32 S3 lit HIGH quand relâché, LOW quand enfoncé
Schéma de câblage
Connectez le module joystick à l'ESP32 S3 en utilisant le schéma de câblage ci-dessous, en gardant le fil VCC connecté à la broche 3,3V pour rester dans le niveau logique de la carte. Vérifiez bien la connexion GND avant la mise sous tension pour éviter des lectures flottantes sur les broches analogiques.

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Notes de sécurité
Alimentez toujours le module joystick depuis la broche 3,3V de l'ESP32 S3, jamais depuis le 5V, car les broches d'entrée analogique de l'ESP32 S3 ne tolèrent pas le 5V et appliquer une tension plus élevée peut endommager l'ADC de façon permanente. Utilisez des fils de raccordement courts et directs pour les lignes de signal analogique (VRX et VRY) afin de minimiser le bruit dans les lectures.
| Broche du joystick | Broche ESP32 S3 |
|---|---|
| GND | GND |
| VCC | 3.3V |
| VRX | GPIO1 |
| VRY | GPIO2 |
| SW | GPIO42 |
Comment programmer pour le joystick
Lire le joystick sur l'ESP32 S3 implique deux techniques distinctes : analogRead() pour les axes X et Y, et une lecture numérique anti-rebond pour le bouton-poussoir. La fonction analogRead() retourne un entier 12 bits entre 0 et 4095, représentant toute la plage de tension de chaque axe du potentiomètre. Pour le bouton, la bibliothèque ezButton simplifie l'anti-rebond afin que vous obteniez des transitions d'état propres sans écrire de logique supplémentaire.
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 S3
- Lecture simple d'une ligne pour chaque axe
Lecture du bouton numérique (broche SW) :
- Traitez-le comme une entrée de bouton-poussoir standard
- Utilisez la bibliothèque ezButton pour un anti-rebond facile
- La bibliothèque active automatiquement la résistance de tirage interne
- Voir le ESP32 S3 - Bouton pour plus de détails
- Des exemples de code pour le bouton sont fournis dans les sections suivantes
Conversion des valeurs en commandes :
- Les valeurs analogiques brutes peuvent avoir besoin d'être converties pour des applications de contrôle
- Convertissez en commandes directionnelles (UP, DOWN, LEFT, RIGHT)
- Mappez vers des angles de servomoteur pour des mécanismes pan-tilt
- Mettez à l'échelle vers des valeurs de vitesse de moteur
- Des exemples de code de conversion sont fournis ci-dessous
Code ESP32 S3
Les sections suivantes fournissent plusieurs exemples de code de joystick pour l'ESP32 S3, chacun se basant sur le précédent. Vous commencerez par lire les valeurs brutes X et Y, puis ajouterez la détection de bouton, et enfin convertirez les lectures analogiques en commandes directionnelles lisibles par un humain. Chaque exemple peut être téléversé et testé indépendamment.
Ce que ces exemples de code montrent :
- Lire les valeurs analogiques X et Y du joystick
- Lire les valeurs analogiques ainsi que l'état du bouton-poussoir
- Convertir les lectures analogiques en commandes directionnelles
- Mapper la position du joystick vers des angles de servomoteur
- Applications pratiques pour le contrôle de jeux et de robots
Lit les valeurs analogiques du joystick
Étapes rapides
- Nouveau sur ESP32 S3 ? Complétez d'abord notre guide ESP32 S3 - Premiers pas.
- Câbler les composants : Suivez le schéma de câblage montré ci-dessus pour connecter le joystick à votre ESP32 S3.
- Connecter la carte : Branchez votre ESP32 S3 à votre ordinateur à l'aide d'un câble USB Type-C.
- Ouvrir l'Arduino IDE : Lancez l'Arduino IDE sur votre ordinateur.
- Sélectionner la carte et le port : Choisissez ESP32 S3 dans le menu des cartes et sélectionnez le bon port COM.
- Téléverser le code : Copiez le code ci-dessus, collez-le dans l'Arduino IDE, et cliquez sur le bouton Upload.
- Tester le joystick : Poussez le pouce du joystick au maximum de ses limites dans toutes les directions.
- Faire tourner le joystick : Déplacez le pouce en un cercle complet (dans le sens horaire ou antihoraire).
- Ouvrir le Serial Monitor : Vérifiez la sortie pour voir les valeurs de coordonnées X et Y.
- Identifier les directions : Regardez le Serial Monitor pendant la rotation pour identifier quelles positions correspondent à gauche/droite/haut/bas (X=0 est à gauche, Y=0 est en haut).
- Astuce Pro : Marquez la base du joystick avec des flèches montrant les directions des coordonnées, pour une référence facile dans vos futurs projets.
※ Note:
Vous remarquerez peut-être que les valeurs analogiques ne sont pas parfaitement linéaires avec le mouvement du joystick. Cela est dû aux caractéristiques de l'ADC de l'ESP32 S3, pas au joystick lui-même. Voir la note sur la calibration de l'ADC à la fin de ce tutoriel pour plus d'informations.
Lit les valeurs analogiques et lit l'état du bouton d'un joystick
Étapes rapides
- Nouveau sur ESP32 S3 ? Complétez d'abord notre guide ESP32 S3 - Premiers pas.
- Installer la bibliothèque ezButton : Cliquez sur l'icône Library Manager dans la barre de navigation gauche de l'Arduino IDE.
- Rechercher la bibliothèque : Tapez "ezButton" dans la zone de recherche.
- Trouver la bibliothèque : Localisez la bibliothèque de bouton d'ArduinoGetStarted.com.
- Installer : Cliquez sur le bouton Install pour ajouter la bibliothèque ezButton à votre Arduino IDE.
- Search for ezButton created by ArduinoGetStarted.com and click the Install button.
- Téléverser le code : Copiez le code ci-dessus dans l'Arduino IDE et cliquez sur Upload.
- Tester le mouvement X/Y : Poussez le pouce du joystick à gauche, à droite, en haut et en bas.
- Tester le bouton : Appuyez sur le pouce du joystick vers le bas depuis le haut pour activer le bouton.
- Voir les résultats : Ouvrez le Serial Monitor pour voir les valeurs X, Y et les changements d'état du bouton.
- Astuce Pro : La bibliothèque ezButton gère automatiquement l'anti-rebond, vous donnant une détection propre des pressions de bouton sans code supplémentaire.
Convertit la valeur analogique en commandes MOVE LEFT/RIGHT/UP/DOWN
Étapes rapides
- Nouveau sur ESP32 S3 ? Complétez d'abord notre guide ESP32 S3 - Premiers pas.
- Téléverser le code : Copiez le code de conversion de commande dans l'Arduino IDE et cliquez sur Upload.
- Déplacer le joystick : Poussez le pouce dans différentes directions - gauche, droite, haut, bas, et diagonale.
- Vérifier le Serial Monitor : Ouvrez le Serial Monitor pour voir les sorties de commande directionnelle.
- Tester les diagonales : Déplacez-vous vers les coins pour voir plusieurs commandes simultanées (par ex. "UP + LEFT").
- Astuce Pro : Ajustez les valeurs de seuil dans le code pour rendre le joystick plus ou moins sensible à vos mouvements.
※ Note:
Le joystick peut délivrer zéro, une, ou deux commandes simultanément. Par exemple, quand il est poussé vers le coin supérieur gauche, il délivre à la fois "MOVE UP" et "MOVE LEFT" en même temps, parfait pour un mouvement diagonal dans les jeux et les robots.
Convertit les valeurs analogiques en angles pour contrôler deux servomoteurs
Pour des instructions détaillées sur le contrôle de servomoteurs avec votre joystick ESP32 S3, voir le tutoriel complet : ESP32 S3 - Joystick - Servomoteur
Ce que vous apprendrez dans le tutoriel servomoteur :
- Mapper les valeurs X/Y du joystick vers des angles de servomoteur (0-180 degrés)
- Contrôler des mécanismes de caméra pan-tilt
- Construire des contrôles interactifs de bras robotisé
- Réponse en temps réel du servomoteur au mouvement du joystick
※ Note:
Informations importantes sur la précision de l'ADC :
Ce tutoriel utilise la fonction analogRead() pour lire des valeurs depuis un ADC (convertisseur analogique-numérique) connecté à un capteur ou un composant. L'ADC de l'ESP32 S3 convient pour des projets qui n'exigent pas une grande précision. Cependant, pour des projets nécessitant des mesures précises, gardez à l'esprit ce qui suit :
- L'ADC de l'ESP32 S3 n'est pas parfaitement précis et peut nécessiter un étalonnage pour obtenir des résultats corrects. Chaque carte ESP32 S3 peut varier légèrement, un étalonnage est donc nécessaire pour chaque carte individuelle.
- L'étalonnage peut être difficile, surtout pour les débutants, et peut ne pas toujours donner exactement les résultats souhaités.
Pour des projets nécessitant une haute précision, envisagez d'utiliser un ADC externe (par ex. ADS1115) avec l'ESP32 S3, ou d'utiliser un autre Arduino, comme l'Arduino Uno R4 WiFi, qui a un ADC plus fiable. Si vous souhaitez tout de même étalonner l'ADC de l'ESP32 S3, consultez le pilote de calibration ADC ESP32.
Idées d'applications et de projets
Le montage joystick avec l'ESP32 S3 ouvre la porte à une large gamme de projets interactifs et de contrôle embarqué. Voici quelques idées pour inspirer votre prochaine construction :
- Voiture RC sans fil : Construisez une voiture RC sans fil avec contrôle directionnel utilisant ESP-NOW.
- Caméra pan-tilt : Créez un système de caméra pan-tilt pour le suivi vidéo utilisant deux servomoteurs.
- Contrôleur de jeu : Concevez un contrôleur de jeu pour des jeux basés sur Arduino s'exécutant sur un écran OLED.
- Bras robotisé : Contrôlez un bras robotisé avec des mouvements de joystick intuitifs mappés sur des angles de servomoteur.
- Interface de drone : Créez une interface de contrôleur de vol de drone avec une sensibilité ajustable.
- Contrôle de fauteuil roulant : Construisez un système de contrôle par joystick pour fauteuil roulant électrique avec montée en vitesse progressive.
- Console d'arcade : Créez une console de jeu de style arcade avec entrée joystick et bouton.
- Slider de caméra : Concevez un slider de caméra avec contrôle de positionnement précis entraîné par des moteurs pas à pas.
Tutoriel vidéo
Regardez la vidéo pas à pas de ce projet ESP32 S3 ci-dessous.
Défiez-vous
Terminer les exemples ci-dessus vous donne une base solide pour des projets basés sur joystick avec l'ESP32 S3. Essayez les défis suivants pour approfondir votre compréhension et pousser vos compétences plus loin :
- Débutant : Ajoutez des indicateurs LED qui s'allument selon la direction du joystick (4 LEDs pour haut/bas/gauche/droite).
- Débutant : Affichez les valeurs X et Y du joystick sur un écran OLED ou LCD au lieu du Serial Monitor.
- Intermédiaire : Créez un programme de dessin qui trace le mouvement du joystick sur un écran OLED en temps réel.
- Intermédiaire : Ajoutez un contrôle de vitesse en mappant la distance du joystick par rapport au centre vers des valeurs de vitesse de moteur.
- Avancé : Construisez un contrôleur de joystick sans fil utilisant ESP-NOW pour contrôler un autre ESP32 S3 à distance.
- Avancé : Implémentez une reconnaissance de gestes qui détecte des motifs de mouvement de joystick spécifiques (cercles, figures en 8, etc.).