ESP32 C3 Super Mini - Joystick

Lernen Sie, wie Sie ein Joystick-Modul mit Ihrem ESP32 C3 Super Mini verbinden und programmieren. Dieses einsteigerfreundliche Tutorial behandelt alles von der Verdrahtung bis zum Auslesen analoger Werte und deren Umwandlung in Steuerbefehle.

In diesem ESP32 C3 Super Mini Joystick-Tutorial lernen Sie:

Joystick-Pinbelegung

Erforderliche Hardware

1×ESP32 C3 Super Mini
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×Joystick
1×Breadboard
1×Verbindungskabel
1×(Optional) DC-Stromanschluss

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Überblick über Joystick Sensor

Der Joystick-Sensor ist ein analoges Eingabemodul, das die Position in zwei Dimensionen erfasst und einen eingebauten Taster besitzt.

Wichtige Merkmale des Joystick-Moduls:

  • Zwei interne Potentiometer, die senkrecht zueinander angeordnet sind
  • Gibt die X-Koordinate als analogen Wert aus (0 bis 4095 beim ESP32)
  • Gibt die Y-Koordinate als analogen Wert aus (0 bis 4095 beim ESP32)
  • Eingebauter Taster zur Klickerkennung
  • Erzeugt 2D-Koordinaten basierend auf der Joystick-Position
  • Die Werte in der Mittelstellung stellen den Ruhezustand dar
  • Häufig eingesetzt in Gamecontrollern, RC-Spielzeugen und Maschinensteuerungen
  • Ideal für Richtungseingaben in Arduino- und ESP32-Projekten
  • Einsteigerfreundlich dank einfacher Funktionen zum analogen Auslesen

Pinbelegung

Das Joystick-Modul hat 5 Pins zum Anschluss an Ihren ESP32 C3 Super Mini:

  • GND: Mit Masse (0V) verbinden
  • VCC: Mit der Stromversorgung (3.3V) 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)
Joystick-Pinbelegung

Funktionsweise

Bewegung der X-Achse (links/rechts):

  • Das Bewegen des Joysticks nach links/rechts ändert die Spannung am VRX-Pin
  • Die Spannung reicht von 0V (links) bis 3.3V (rechts)
  • Der ESP32 C3 Super Mini liest analoge Werte von 0 bis 4095
  • Der Wert ist proportional zur horizontalen Position des Daumenknopfs

Bewegung der Y-Achse (oben/unten):

  • Das Bewegen des Joysticks nach oben/unten ändert die Spannung am VRY-Pin
  • Die Spannung reicht von 0V (oben) bis 3.3V (unten)
  • Der ESP32 C3 Super Mini liest analoge Werte von 0 bis 4095
  • Der Wert ist proportional zur vertikalen Position des Daumenknopfs

Diagonale Bewegung:

  • Die Spannungen an VRX und VRY ändern sich gleichzeitig
  • Jede Achse gibt einen Wert proportional zur Projektion der Position aus
  • Erzeugt gleichmäßige 2D-Koordinaten für jede Richtung

Funktion des Tasters:

  • Drücken Sie den Joystick nach unten, um den internen Taster zu betätigen
  • Mit Pull-up-Widerstand gibt der SW-Pin normalerweise 3.3V aus
  • Das Drücken des Tasters zieht den SW-Pin auf 0V (GND)
  • Der ESP32 liest HIGH, wenn losgelassen, und LOW, wenn gedrückt

Verdrahtungsdiagramm

Schließen Sie Ihr Joystick-Modul gemäß diesem Schaltplan an den ESP32 C3 Super Mini an:

ESP32 C3 Super Mini Joystick Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Verbindungstabelle:

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

Wie man den Joystick programmiert

Beim Joystick müssen Sie mit Ihrem ESP32 C3 Super Mini zwei Programmierbestandteile behandeln:

Analoge Achsen auslesen (X-, Y-Koordinaten):

  • Verwenden Sie die Funktion analogRead() für die Pins VRX und VRY
  • Liefert beim ESP32 C3 Super Mini Werte von 0 bis 4095
  • Einfaches einzeiliges Auslesen für jede Achse
int valueX = analogRead(A1); int valueY = analogRead(A0);

Digitalen Taster auslesen (SW-Pin):

  • Wie einen normalen Taster-Eingang behandeln
  • Verwenden Sie die ezButton-Bibliothek für einfaches Entprellen
  • Die Bibliothek aktiviert den internen Pull-up-Widerstand automatisch
  • Code-Beispiele für den Taster finden Sie in den folgenden Abschnitten

Werte in Befehle umwandeln:

  • Rohe Analogwerte müssen für Steuerungsanwendungen eventuell umgewandelt werden
  • In Richtungsbefehle umwandeln (UP, DOWN, LEFT, RIGHT)
  • Auf Servowinkel für Schwenk-Neige-Mechanismen abbilden
  • Auf Motorgeschwindigkeitswerte skalieren
  • Beispielcode für die Umwandlung finden Sie unten

ESP32 C3 Super Mini Code

Dieser Abschnitt bietet mehrere ESP32 C3 Super Mini Joystick-Beispiele:

Was diese Code-Beispiele zeigen:

  • Auslesen der analogen X- und Y-Werte des Joysticks
  • Auslesen der Analogwerte plus des Tasterzustands
  • Umwandeln der analogen Messwerte in Richtungsbefehle
  • Abbilden der Joystick-Position auf Servomotor-Winkel
  • Praktische Anwendungen für Spiel- und Robotersteuerung

Analoge Werte vom Joystick auslesen

/* * Dieser ESP32 C3 Super Mini Code wurde von newbiely.de entwickelt * Dieser ESP32 C3 Super Mini Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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); }

Schnelle Schritte

  • Neu beim ESP32 C3 Mini? Absolvieren Sie zuerst unser Tutorial Erste Schritte mit dem ESP32 C3 Mini, um Ihre Entwicklungsumgebung einzurichten.
  • Komponenten verdrahten: Folgen Sie dem obigen Schaltplan, um den Joystick mit Ihrem ESP32 C3 Super Mini zu verbinden.
  • Platine anschließen: Verbinden Sie Ihren ESP32 C3 Super Mini über ein USB-Typ-C-Kabel mit Ihrem Computer.
  • Arduino IDE öffnen: Starten Sie die Arduino IDE auf Ihrem Computer.
  • Board und Port auswählen: Wählen Sie ESP32 C3 Super Mini 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 Daumenknopf des Joysticks in alle Richtungen bis zum Anschlag.
  • Joystick drehen: Bewegen Sie den Daumenknopf 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 Drehen den seriellen Monitor, um festzustellen, welche Positionen links/rechts/oben/unten entsprechen (X=0 ist links, Y=0 ist oben).
  • Profi-Tipp: Markieren Sie die Joystick-Basis mit Pfeilen für die Koordinatenrichtungen, damit Sie in zukünftigen Projekten schnell nachschauen können.
∞
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

※ Notiz:

Möglicherweise bemerken Sie, dass die Analogwerte nicht perfekt linear zur Joystick-Bewegung verlaufen. Das liegt an den ADC-Eigenschaften des ESP32 C3 Super Mini, nicht am Joystick selbst. Weitere Informationen finden Sie im Hinweis zur ADC-Kalibrierung am Ende dieses Tutorials.

Analoge Werte und den Tasterzustand eines Joysticks auslesen

/* * Dieser ESP32 C3 Super Mini Code wurde von newbiely.de entwickelt * Dieser ESP32 C3 Super Mini Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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); }

Schnelle Schritte

  • ezButton-Bibliothek installieren: Klicken Sie auf das Library-Manager-Symbol in der linken Navigationsleiste der Arduino IDE.
  • Nach der 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.
∞
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
  • Code hochladen: Kopieren Sie den obigen Code in die Arduino IDE und klicken Sie auf Upload.
  • X/Y-Bewegung testen: Drücken Sie den Daumenknopf des Joysticks nach links, rechts, oben und unten.
  • Taster testen: Drücken Sie den Daumenknopf des Joysticks von oben nach unten, um den Taster zu betätigen.
  • Ergebnisse ansehen: Öffnen Sie den seriellen Monitor, um die X-, Y-Werte und Änderungen des Tasterzustands zu sehen.
  • Profi-Tipp: Die ezButton-Bibliothek übernimmt das Entprellen automatisch und liefert Ihnen eine saubere Tastendruck-Erkennung ohne zusätzlichen Code.
∞
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

Analogwerte in die Befehle MOVE LEFT/RIGHT/UP/DOWN umwandeln

/* * Dieser ESP32 C3 Super Mini Code wurde von newbiely.de entwickelt * Dieser ESP32 C3 Super Mini Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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 } }

Schnelle Schritte

  • Code hochladen: Kopieren Sie den Code zur Befehlsumwandlung in die Arduino IDE und klicken Sie auf Upload.
  • Joystick bewegen: Drücken Sie den Daumenknopf 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 Joystick 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 für Ihre Bewegungen zu machen.
∞
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

※ Notiz:

Der Joystick kann null, einen oder zwei Befehle gleichzeitig ausgeben. Wird er zum Beispiel in die obere linke Ecke gedrückt, gibt er gleichzeitig "MOVE UP" und "MOVE LEFT" aus - ideal für diagonale Bewegungen in Spielen und Robotern.

Analogwerte in Winkel umwandeln, um zwei Servomotoren zu steuern

Eine ausführliche Anleitung zur Steuerung von Servomotoren mit Ihrem ESP32 C3 Super Mini Joystick finden Sie im vollständigen Tutorial: ESP32 C3 Super Mini - Joystick steuert Servomotor

Was Sie im Servo-Tutorial lernen:

  • Abbilden der X/Y-Werte des Joysticks auf Servowinkel (0-180 Grad)
  • Steuern von Schwenk-Neige-Kameramechanismen
  • Aufbau interaktiver Steuerungen für Roboterarme
  • Echtzeit-Reaktion 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 C3 Super Mini eignet sich für Projekte, die keine hohe Genauigkeit erfordern. Für Projekte mit präzisen Messungen sollten Sie jedoch Folgendes beachten:

  • Der ADC des ESP32 C3 Super Mini ist nicht perfekt genau und muss für korrekte Ergebnisse eventuell kalibriert werden. Jede ESP32 C3 Super Mini Platine kann leicht abweichen, daher ist eine Kalibrierung für jede einzelne Platine notwendig.
  • Die Kalibrierung kann besonders für Einsteiger schwierig sein und liefert nicht immer genau die gewünschten Ergebnisse.

Für Projekte, die hohe Präzision erfordern, sollten Sie einen externen ADC (z. B. ADS1115) mit dem ESP32 C3 Super Mini verwenden oder einen anderen Arduino wie den Arduino Uno R4 WiFi einsetzen, der einen zuverlässigeren ADC besitzt. Wenn Sie den ADC des ESP32 C3 Super Mini dennoch kalibrieren möchten, lesen Sie den ESP32 ADC Calibration Driver.

Anwendungs- und Projektideen

Nutzen Sie Ihren ESP32 C3 Super Mini Joystick-Aufbau für diese spannenden Projekte:

  • Bauen Sie ein kabelloses RC-Auto mit Richtungssteuerung
  • Erstellen Sie ein Schwenk-Neige-Kamerasystem zur Videoverfolgung
  • Entwerfen Sie einen Gamecontroller für Arduino-basierte Spiele
  • Steuern Sie einen Roboterarm mit intuitiven Joystick-Bewegungen
  • Erstellen Sie eine Bedienschnittstelle für eine Drohnensteuerung
  • Bauen Sie ein Joystick-Steuersystem für einen elektrischen Rollstuhl
  • Erstellen Sie eine Spielkonsole im Arcade-Stil
  • Entwerfen Sie einen Kameraslider mit präziser Positionssteuerung

Video-Tutorial

Sehen Sie sich das folgende Video an, um eine visuelle Schritt-für-Schritt-Anleitung zu diesem Projekt zu erhalten.

Fordern Sie sich selbst heraus

Testen Sie Ihre ESP32 C3 Super Mini Joystick-Kenntnisse mit diesen Aufgaben:

  • Einfach: Fügen Sie LED-Anzeigen hinzu, die je nach Joystick-Richtung aufleuchten (4 LEDs für oben/unten/links/rechts).
  • Einfach: Zeigen Sie die X- und Y-Werte des Joysticks auf einem OLED- oder LCD-Bildschirm statt im seriellen Monitor an.
  • Mittel: Erstellen Sie ein Zeichenprogramm, das die Joystick-Bewegung in Echtzeit auf einem OLED-Display darstellt.
  • Mittel: Fügen Sie eine Geschwindigkeitssteuerung hinzu, indem Sie den Abstand des Joysticks von der Mitte auf Motorgeschwindigkeitswerte abbilden.
  • Fortgeschritten: Bauen Sie einen kabellosen Joystick-Controller mit ESP-NOW, um einen anderen ESP32 fernzusteuern.
  • Fortgeschritten: Implementieren Sie eine Gestenerkennung, die bestimmte Joystick-Bewegungsmuster erkennt (Kreise, Achten usw.).

Verwandte Tutorials

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!