ESP32 S3 - Joystick
Erfahren Sie, wie Sie ein Joystick-Modul mit Ihrem ESP32-S3-Board verbinden und programmieren. Dieses Tutorial führt Sie durch die Verdrahtung, das Auslesen der analogen Werte beider Achsen, das Erkennen von Tastendrücken und die Umwandlung der Rohwerte in Richtungsbefehle.
Was Sie umsetzen werden:
- Einen Joystick-Leser, der die analogen X- und Y-Werte im seriellen Monitor ausgibt
- Einen kombinierten Joystick- und Tasten-Leser mit der ezButton-Bibliothek
- Einen Umwandler für Richtungsbefehle (MOVE LEFT / RIGHT / UP / DOWN)
- Eine Grundlage für Projekte zur Servomotorsteuerung und Robotersteuerung

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables ESP32 S3 Starter-Kit (ESP32 S3 enthalten) | |
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Überblick über Joystick Sensor
Der Joystick-Sensor ist ein analoges Eingabemodul, das zwei rechtwinklig zueinander angeordnete interne Potentiometer nutzt, um die Position in zwei Dimensionen zu erfassen. Außerdem verfügt er über einen eingebauten Taster, der ausgelöst wird, wenn der Joystick-Hebel nach unten gedrückt wird. Auf dem ESP32 S3 werden beide analogen Achsen als Werte von 0 bis 4095 gelesen, was Ihnen eine feine Kontrolle über die Bewegungserkennung ermöglicht.
Wichtige Spezifikationen
Der Joystick gibt die Position der X-Achse am Pin VRX und die Position der Y-Achse am Pin VRY aus, jeweils als analoge Spannung zwischen 0 V und 3,3 V, die der ESP32 S3 in eine 12-Bit-Ganzzahl (0 bis 4095) umwandelt. In der Ruhestellung liegt der Wert jeder Achse typischerweise nahe der Mitte, bei etwa 2048. Der eingebaute Taster am Pin SW ist bei Verwendung eines internen Pull-up-Widerstands normalerweise HIGH und wird LOW, wenn der Joystick-Hebel gedrückt wird. Das Modul ist mit 3,3-V-Logik kompatibel und passt daher ideal zum ESP32 S3.
Pinbelegung
Das Joystick-Modul hat fünf Pins zum Anschluss an Ihren ESP32 S3:
- GND: Mit Masse (0 V) verbinden
- VCC: Mit der Stromversorgung (3,3 V) verbinden
- VRX: Analoger Ausgang für die horizontale Position (X-Achse)
- VRY: Analoger Ausgang für die vertikale Position (Y-Achse)
- SW: Digitaler Ausgang des internen Tasters (normalerweise HIGH mit Pull-up-Widerstand, LOW beim Drücken)

Funktionsweise
Bewegung der X-Achse (links/rechts):
- Eine Bewegung des Joysticks nach links/rechts ändert die Spannung am Pin VRX
- Die Spannung reicht von 0 V (links) bis 3,3 V (rechts)
- Der ESP32 S3 liest analoge Werte von 0 bis 4095
- Der Wert ist proportional zur horizontalen Position des Daumenhebels
Bewegung der Y-Achse (oben/unten):
- Eine Bewegung des Joysticks nach oben/unten ändert die Spannung am Pin VRY
- Die Spannung reicht von 0 V (oben) bis 3,3 V (unten)
- Der ESP32 S3 liest analoge Werte von 0 bis 4095
- Der Wert ist proportional zur vertikalen Position des Daumenhebels
Diagonale Bewegung:
- Die Spannungen an VRX und VRY ändern sich gleichzeitig
- Jede Achse gibt einen Wert proportional zur Projektion der Position aus
- Ergibt fließende 2D-Koordinaten für jede Richtung
Tasterfunktion:
- Drücken Sie den Joystick nach unten, um den internen Taster auszulösen
- Mit Pull-up-Widerstand gibt der Pin SW normalerweise 3,3 V aus
- Beim Drücken des Tasters wird der Pin SW auf 0 V (GND) gezogen
- Der ESP32 S3 liest HIGH, wenn losgelassen, und LOW, wenn gedrückt
Verdrahtungsdiagramm
Schließen Sie das Joystick-Modul gemäß dem folgenden Schaltplan an den ESP32 S3 an und verbinden Sie das VCC-Kabel mit dem 3,3-V-Pin, um im Logikpegel des Boards zu bleiben. Überprüfen Sie vor dem Einschalten die GND-Verbindung, um schwankende Messwerte an den analogen Pins zu vermeiden.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Sicherheitshinweise
Versorgen Sie das Joystick-Modul immer über den 3,3-V-Pin des ESP32 S3 und niemals über 5 V, da die analogen Eingangspins des ESP32 S3 nicht 5-V-tolerant sind und eine höhere Spannung den ADC dauerhaft beschädigen kann. Verwenden Sie kurze, direkte Jumperkabel für die analogen Signalleitungen (VRX und VRY), um Störungen in den Messwerten zu minimieren.
| Joystick-Pin | ESP32-S3-Pin |
|---|---|
| GND | GND |
| VCC | 3.3V |
| VRX | GPIO1 |
| VRY | GPIO2 |
| SW | GPIO42 |
So programmieren Sie den Joystick
Das Auslesen des Joysticks am ESP32 S3 umfasst zwei getrennte Techniken: analogRead() für die X- und Y-Achse sowie ein entprelltes digitales Lesen für den Taster. Die Funktion analogRead() gibt eine 12-Bit-Ganzzahl zwischen 0 und 4095 zurück, die den gesamten Spannungsbereich jeder Potentiometerachse abbildet. Für den Taster vereinfacht die ezButton-Bibliothek das Entprellen, sodass Sie saubere Zustandswechsel ohne zusätzliche Logik erhalten.
Analoge Achsen auslesen (X-, Y-Koordinaten):
- Verwenden Sie die Funktion analogRead() für die Pins VRX und VRY
- Liefert auf dem ESP32 S3 Werte von 0 bis 4095
- Einfaches Auslesen jeder Achse mit einer Zeile
Digitalen Taster auslesen (Pin SW):
- Wie einen normalen Taster-Eingang behandeln
- Die ezButton-Bibliothek für einfaches Entprellen verwenden
- Die Bibliothek aktiviert den internen Pull-up-Widerstand automatisch
- Details finden Sie im ESP32 S3 - Taster-Tutorial
- Codebeispiele für den Taster folgen in den nächsten Abschnitten
Werte in Befehle umwandeln:
- Analoge Rohwerte müssen für Steuerungsanwendungen eventuell umgewandelt werden
- In Richtungsbefehle umwandeln (UP, DOWN, LEFT, RIGHT)
- Auf Servowinkel für Pan-Tilt-Mechanismen abbilden
- Auf Motordrehzahlwerte skalieren
- Beispielcodes für die Umwandlung finden Sie unten
ESP32-S3-Code
Die folgenden Abschnitte bieten mehrere Codebeispiele für den Joystick am ESP32 S3, die jeweils auf dem vorherigen aufbauen. Sie beginnen mit dem Auslesen der rohen X- und Y-Werte, fügen dann die Tastenerkennung hinzu und wandeln schließlich die analogen Messwerte in gut lesbare Richtungsbefehle um. Jedes Beispiel kann unabhängig hochgeladen und getestet werden.
Was diese Codebeispiele zeigen:
- Auslesen der analogen X- und Y-Werte des Joysticks
- Auslesen der analogen Werte plus Tasterzustand
- Umwandlung analoger Messwerte in Richtungsbefehle
- Abbildung der Joystick-Position auf Servomotorwinkel
- Praktische Anwendungen für Spiel- und Robotersteuerung
Analoge Werte vom Joystick auslesen
Schnelle Schritte
- Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
- Komponenten verdrahten: Folgen Sie dem obigen Schaltplan, um den Joystick mit Ihrem ESP32 S3 zu verbinden.
- Board anschließen: Verbinden Sie Ihren ESP32 S3 über ein USB-Type-C-Kabel mit Ihrem Computer.
- Arduino IDE öffnen: Starten Sie die Arduino IDE auf Ihrem Computer.
- Board und Port wählen: Wählen Sie ESP32 S3 im Board-Menü und den richtigen COM-Port aus.
- Code hochladen: Kopieren Sie den obigen Code, fügen Sie ihn in die Arduino IDE ein und klicken Sie auf die Schaltfläche Upload.
- Joystick testen: Drücken Sie den Daumenhebel des Joysticks in alle Richtungen bis zum Anschlag.
- Joystick kreisen lassen: Bewegen Sie den Daumenhebel in einem vollständigen Kreis (im oder gegen den Uhrzeigersinn).
- Seriellen Monitor öffnen: Prüfen Sie die Ausgabe, um die X- und Y-Koordinatenwerte zu sehen.
- Richtungen bestimmen: Beobachten Sie beim Kreisen den seriellen Monitor, um festzustellen, welche Positionen links/rechts/oben/unten entsprechen (X=0 ist links, Y=0 ist oben).
- Profi-Tipp: Markieren Sie den Sockel des Joysticks mit Pfeilen für die Koordinatenrichtungen, um in künftigen Projekten schnell nachschlagen zu können.
※ Notiz:
Möglicherweise stellen Sie fest, dass die analogen Werte nicht perfekt linear zur Joystick-Bewegung verlaufen. Das liegt an den ADC-Eigenschaften des ESP32 S3, nicht am Joystick selbst. Weitere Informationen finden Sie im Hinweis zur ADC-Kalibrierung am Ende dieses Tutorials.
Analoge Werte und Tasterzustand vom Joystick auslesen
Schnelle Schritte
- Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
- ezButton-Bibliothek installieren: Klicken Sie auf das Symbol des Bibliotheksverwalters in der linken Navigationsleiste der Arduino IDE.
- Bibliothek suchen: Geben Sie "ezButton" in das Suchfeld ein.
- Bibliothek finden: Suchen Sie die Button-Bibliothek von ArduinoGetStarted.com.
- Installieren: Klicken Sie auf die Schaltfläche Install, um die ezButton-Bibliothek zu Ihrer Arduino IDE hinzuzufügen.
- Search for ezButton created by ArduinoGetStarted.com and click the Install button.
- Code hochladen: Kopieren Sie den obigen Code in die Arduino IDE und klicken Sie auf Upload.
- X/Y-Bewegung testen: Drücken Sie den Daumenhebel nach links, rechts, oben und unten.
- Taster testen: Drücken Sie den Daumenhebel von oben nach unten, um den Taster auszulösen.
- Ergebnisse ansehen: Öffnen Sie den seriellen Monitor, um die X- und Y-Werte sowie Änderungen des Tasterzustands zu sehen.
- Profi-Tipp: Die ezButton-Bibliothek übernimmt das Entprellen automatisch und sorgt so ohne zusätzlichen Code für eine saubere Erkennung von Tastendrücken.
Analoge Werte in die Befehle MOVE LEFT/RIGHT/UP/DOWN umwandeln
Schnelle Schritte
- Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
- Code hochladen: Kopieren Sie den Code zur Befehlsumwandlung in die Arduino IDE und klicken Sie auf Upload.
- Joystick bewegen: Drücken Sie den Daumenhebel in verschiedene Richtungen – links, rechts, oben, unten und diagonal.
- Seriellen Monitor prüfen: Öffnen Sie den seriellen Monitor, um die ausgegebenen Richtungsbefehle zu sehen.
- Diagonalen testen: Bewegen Sie den Hebel in die Ecken, um mehrere gleichzeitige Befehle zu sehen (z. B. "UP + LEFT").
- Profi-Tipp: Passen Sie die Schwellenwerte im Code an, um den Joystick mehr oder weniger empfindlich auf Ihre Bewegungen reagieren zu lassen.
※ Notiz:
Der Joystick kann null, einen oder zwei Befehle gleichzeitig ausgeben. Wird er beispielsweise in die obere linke Ecke gedrückt, gibt er gleichzeitig "MOVE UP" und "MOVE LEFT" aus – ideal für diagonale Bewegungen in Spielen und bei Robotern.
Analoge Werte in Winkel umwandeln, um zwei Servomotoren zu steuern
Eine ausführliche Anleitung zur Steuerung von Servomotoren mit dem Joystick am ESP32 S3 finden Sie im vollständigen Tutorial: ESP32 S3 - Joystick steuert Servomotor
Was Sie im Servo-Tutorial lernen:
- Abbildung der X/Y-Werte des Joysticks auf Servowinkel (0–180 Grad)
- Steuerung von Pan-Tilt-Kameramechanismen
- Aufbau einer interaktiven Roboterarmsteuerung
- Echtzeitreaktion des Servos auf Joystick-Bewegungen
※ Notiz:
Wichtige Informationen zur ADC-Genauigkeit:
Dieses Tutorial verwendet die Funktion analogRead(), um Werte von einem ADC (Analog-Digital-Wandler) zu lesen, der mit einem Sensor oder einer Komponente verbunden ist. Der ADC des ESP32 S3 eignet sich für Projekte, die keine hohe Genauigkeit erfordern. Für Projekte, die präzise Messungen benötigen, beachten Sie jedoch Folgendes:
- Der ADC des ESP32 S3 ist nicht vollkommen genau und muss für korrekte Ergebnisse möglicherweise kalibriert werden. Jedes ESP32-S3-Board kann leicht abweichen, daher ist eine Kalibrierung für jedes einzelne Board notwendig.
- Die Kalibrierung kann anspruchsvoll sein, besonders für Einsteiger, und liefert nicht immer genau die gewünschten Ergebnisse.
Für Projekte mit hohen Genauigkeitsanforderungen sollten Sie einen externen ADC (z. B. ADS1115) mit dem ESP32 S3 verwenden oder einen anderen Arduino wie den Arduino Uno R4 WiFi einsetzen, der einen zuverlässigeren ADC besitzt. Wenn Sie den ADC des ESP32 S3 dennoch kalibrieren möchten, lesen Sie den ESP32 ADC Calibration Driver.
Anwendungs- und Projektideen
Der Joystick-Aufbau mit dem ESP32 S3 eröffnet eine große Bandbreite an interaktiven und eingebetteten Steuerungsprojekten. Hier einige Ideen als Inspiration für Ihr nächstes Projekt:
- Drahtloses RC-Auto: Bauen Sie ein drahtloses RC-Auto mit Richtungssteuerung über ESP-NOW.
- Pan-Tilt-Kamera: Erstellen Sie ein Pan-Tilt-Kamerasystem zur Videoverfolgung mit zwei Servomotoren.
- Gamecontroller: Entwerfen Sie einen Gamecontroller für Arduino-basierte Spiele auf einem OLED-Display.
- Roboterarm: Steuern Sie einen Roboterarm mit intuitiven Joystick-Bewegungen, die auf Servowinkel abgebildet werden.
- Drohnen-Schnittstelle: Bauen Sie eine Schnittstelle für eine Drohnen-Flugsteuerung mit einstellbarer Empfindlichkeit.
- Rollstuhlsteuerung: Bauen Sie ein Joystick-Steuersystem für einen elektrischen Rollstuhl mit sanfter Geschwindigkeitsanpassung.
- Arcade-Konsole: Erstellen Sie eine Spielkonsole im Arcade-Stil mit Joystick- und Tasteneingabe.
- Kamera-Slider: Entwerfen Sie einen Kamera-Slider mit präziser Positionssteuerung über Schrittmotoren.
Video-Tutorial
Sehen Sie sich unten die Schritt-für-Schritt-Videoanleitung für dieses ESP32-S3-Projekt an.
Fordern Sie sich selbst heraus
Mit den obigen Beispielen haben Sie eine solide Grundlage für Joystick-Projekte mit dem ESP32 S3. Probieren Sie die folgenden Herausforderungen aus, um Ihr Verständnis zu vertiefen und Ihre Fähigkeiten weiter auszubauen:
- Anfänger: Fügen Sie LED-Anzeigen hinzu, die je nach Joystick-Richtung aufleuchten (4 LEDs für oben/unten/links/rechts).
- Anfänger: Zeigen Sie die X- und Y-Werte des Joysticks auf einem OLED- oder LCD-Display statt im seriellen Monitor an.
- Fortgeschritten: Erstellen Sie ein Zeichenprogramm, das die Joystick-Bewegung in Echtzeit auf einem OLED-Display darstellt.
- Fortgeschritten: Fügen Sie eine Geschwindigkeitssteuerung hinzu, indem Sie den Abstand des Joysticks von der Mitte auf Motordrehzahlwerte abbilden.
- Experte: Bauen Sie einen drahtlosen Joystick-Controller mit ESP-NOW, um einen anderen ESP32 S3 aus der Ferne zu steuern.
- Experte: Implementieren Sie eine Gestenerkennung, die bestimmte Bewegungsmuster des Joysticks erkennt (Kreise, Achten usw.).