ESP32 S3 - Taster

Die Verwendung eines Tasters mit Ihrem ESP32 S3 zu lernen ist eine der grundlegendsten Fähigkeiten in der Embedded-Entwicklung. Dieses Tutorial führt Sie durch alles, was Sie brauchen — Verdrahtung, Code und häufige Fallstricke — damit Sie jedem ESP32 S3 Projekt sicher eine Tastereingabe hinzufügen können.

Was Sie bauen werden:

  1. Eine Schaltung, die einen Taster mithilfe des internen Pull-up-Widerstands mit dem ESP32 S3 verbindet
  2. Einen Sketch, der den Tasterzustand ausliest und im Seriellen Monitor ausgibt
  3. Eine erweiterte Version, die Drück- und Loslass-Ereignisse getrennt erkennt
  4. Eine Grundlage für praxisnahe Anwendungen wie Zähler, Umschalter und Sicherheitsauslöser
ESP32 S3 - Taster

※ Notiz:

Bevor wir den Taster vorstellen, möchten wir darauf hinweisen, dass es zwei häufige Fehler gibt, auf die Anfänger normalerweise stoßen:

  1. Das Problem des schwebenden Eingangs:
    • Symptom: Wenn ein Taster an einen Eingangspin des ESP32 S3 angeschlossen wird, ist der Zustand des Eingangspins zufällig und stimmt nicht mit dem Drückzustand des Tasters überein.
    • Ursache: Am Tasterpin wird KEIN Pull-down- oder Pull-up-Widerstand verwendet.
    • Lösung: ⇒ Verwenden Sie einen Pull-down- oder Pull-up-Widerstand am Eingangspin. Die Details werden später in diesem Tutorial beschrieben.
  • Das Prellphänomen
    • Symptom: Der Code auf dem ESP32 S3 liest den Zustand des Tasters und erkennt das Drückereignis anhand der Zustandsänderung (HIGH zu LOW oder LOW zu HIGH). Wenn der Taster tatsächlich nur einmal gedrückt wird, erkennt der ESP32 S3 Code mehrere Drücke statt nur einen.
    • Ursache: Aufgrund mechanischer und physikalischer Eigenschaften wechselt der Zustand des Eingangspins bei einem einzigen Tasterdruck mehrmals schnell zwischen LOW und HIGH statt nur einmal
    • Lösung: ⇒ Entprellung. Die Details werden im Tutorial ESP32 S3 - Taster - Entprellung beschrieben.

    Das Prellphänomen verursacht nur bei bestimmten Anwendungen Fehlfunktionen, bei denen die genaue Anzahl der Drücke erkannt werden muss. Bei manchen Anwendungen ist es harmlos.

    Erforderliche Hardware

    1×ESP32 S3 WROOM N16R8
    1×(Alternativ) ESP32 S3 SuperMini Dev Module
    1×(Alternativ) ESP32 S3 Uno-form Board
    1×(Alternativ) ESP32 S3 Camera Board
    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×Breadboard-Taster mit Kappe
    1×Breadboard-Taster-Kit
    1×Panel-Drucktaster
    1×Taster-Modul
    1×Breadboard
    1×Verbindungskabel
    1×(Optional) DC-Stromanschluss
    1×(Empfohlen) Screw Terminal Expansion Board for ESP32 S3
    1×(Empfohlen) Breakout Expansion Board for ESP32 S3
    1×(Empfohlen) Power Splitter for ESP32 S3

    Oder Sie können die folgenden Kits kaufen:

    1×DIYables ESP32 S3 Starter-Kit (ESP32 S3 enthalten)
    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 Button

    Ein Taster ist ein einfacher elektromechanischer Schalter, der beim Drücken einen Stromkreis schließt und ihn beim Loslassen öffnet. Trotz seiner Einfachheit ist der Taster eines der vielseitigsten Eingabegeräte, die Sie in ESP32 S3 Projekten verwenden werden, und ermöglicht Benutzerinteraktion mit minimalem Hardwareaufwand.

    Wichtige Spezifikationen

    Taster für die Leiterplattenmontage sind für Prototypen auf dem Breadboard und für Lötanwendungen gedacht. Taster für die Panelmontage passen in Gehäuse für fertige Projekte. Tastermodule enthalten einen eingebauten Pull-down-Widerstand, der die Verdrahtung vereinfacht und ein stabiles Signal ohne externe Bauteile gewährleistet.

    ESP32 S3 Drucktaster

    Pinbelegung des Tasters

    Taster für Leiterplattenmontage (4 Pins)

    Ein Taster für die Leiterplattenmontage hat vier Pins, die intern paarweise verbunden sind. Das verleiht dem Bauteil mechanische Stabilität, wenn Sie es auf ein Breadboard drücken.

    Pinbelegung des Tasters

    Die vier Pins reduzieren sich auf zwei elektrisch unterschiedliche Anschlüsse. Wählen Sie bei der Verdrahtung einen Pin aus jedem Paar:

    1. Vier Pins sind in zwei intern verbundenen Paaren angeordnet
    2. Nur zwei der vier Pins müssen in Ihrer Schaltung angeschlossen werden
    3. Jede Kombination, die einen Pin aus jedem Paar auswählt, funktioniert korrekt
    4. Die zusätzlichen Pins sorgen für mechanische Stabilität gegen die Druckkraft
    Wie man einen Taster verwendet

    Taster für Panelmontage (2 Pins)

    Ein Taster für die Panelmontage hat zwei einfache Pins ohne interne Paarung — verbinden Sie einfach einen Pin mit Ihrem GPIO und den anderen mit GND (oder VCC, je nach Verdrahtungsmethode).

    Pinbelegung des zweipoligen Drucktasters
    image source: diyables.io

    Tastermodul (3 Pins)

    Das Tastermodul hat einen Pull-down-Widerstand direkt auf der Platine und ist damit die einsteigerfreundlichste Option. Seine drei Pins sind:

    1. GND: Mit Masse verbinden
    2. VCC: Mit der 3,3V-Stromversorgung verbinden
    3. OUT: Mit einem digitalen Eingangspin des ESP32 S3 verbinden (gibt LOW aus, wenn nicht gedrückt, und HIGH, wenn gedrückt)

    Wie ein Taster funktioniert

    Der Taster wirkt als einfacher Ein/Aus-Schalter zwischen zwei Pins:

    1. Wenn gedrückt: Pin A wird mit Pin B verbunden, der Stromkreis ist geschlossen
    2. Wenn losgelassen: Pin A wird von Pin B getrennt, der Stromkreis ist offen
    Wie ein Taster funktioniert

    ESP32 S3 - Taster

    Ein Tasterpin wird mit einem digitalen Eingangspin des ESP32 S3 verbunden, der andere je nach gewählter Verdrahtungsmethode entweder mit VCC oder GND. Ihr ESP32 S3 Code liest dann den Spannungspegel an diesem Eingangspin, um festzustellen, ob der Taster gerade gedrückt oder losgelassen ist.

    Eingangszustand und Drückzustand

    Der Zusammenhang zwischen der Spannung am Eingangspin und dem physischen Tasterzustand hängt davon ab, wie Sie die Schaltung verdrahten. Es gibt zwei Standardansätze:

    1. Taster mit VCC verbunden:
      • Erfordert einen Pull-down-Widerstand
      • Taster gedrückt = HIGH-Signal
      • Taster losgelassen = LOW-Signal
  • Taster mit GND verbunden (empfohlen für Einsteiger):
    • Erfordert einen Pull-up-Widerstand
    • Taster gedrückt = LOW-Signal
    • Taster losgelassen = HIGH-Signal

    ※ Notiz:

    Wenn weder ein Pull-down- noch ein Pull-up-Widerstand verwendet wird, ist der Zustand des Eingangspins zufällig zwischen HIGH und LOW (instabil, nicht festgelegt), wenn der Taster NICHT gedrückt ist. Dies wird als "Problem des schwebenden Eingangs" bezeichnet und führt zu Fehlfunktionen.

    Der ESP32 S3 hat in jeden GPIO-Pin interne Pull-up-Widerstände eingebaut, sodass Sie einen mit einer einzigen Codezeile aktivieren können — kein externer Widerstand erforderlich. Dies ist der einfachste und gebräuchlichste Ansatz für Einsteiger, die die Verdrahtungsmethode Taster-zu-GND verwenden.

    Schaltplan zwischen Taster und ESP32 S3

    Die folgenden Schaltpläne zeigen, wie Sie Taster für Leiterplatten- und Panelmontage mit Ihrem ESP32 S3 verbinden. Beide Konfigurationen verwenden den internen Pull-up-Widerstand, sodass keine externen Widerstände benötigt werden.

    Sicherheitshinweise

    Schließen Sie Ihren Taster immer an, bevor Sie das Board mit Strom versorgen. Der GPIO7-Pin des ESP32 S3 arbeitet mit 3,3V-Logik — verbinden Sie den Taster niemals direkt mit einer 5V-Quelle. Die Verwendung des internen Pull-ups mit einer Taster-zu-GND-Konfiguration ist für die meisten Anwendungen der sicherste und zuverlässigste Ansatz.

    Verdrahtung mit einem Taster für Leiterplattenmontage:

    ESP32 S3 Taster Schaltplan

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

    Pin des Tasters Pin des ESP32 S3
    Pin A GPIO21
    Pin B GND

    Wie man einen Taster programmiert

    Die Programmierung eines Tasters am ESP32 S3 erfordert nur zwei Schritte. Konfigurieren Sie zuerst den GPIO-Pin als Eingang mit aktiviertem internen Pull-up-Widerstand. Verwenden Sie dann digitalRead() in Ihrer Schleife, um den Pin-Zustand kontinuierlich abzufragen.

    Schritt 1: Den Pin mit internem Pull-up initialisieren:

    pinMode(21, INPUT_PULLUP); // config GPIO21 as input pin and enable the internal pull-up resistor

    Schritt 2: Den Tasterzustand auslesen:

    int button_state = digitalRead(BUTTON_PIN);

    Zwei häufige Anwendungsfälle:

    ※ Notiz:

    Es gibt zwei weit verbreitete Anwendungsfälle:

    • Der erste Anwendungsfall: Wenn der Eingangszustand HIGH ist, tue etwas. Wenn der Eingangszustand LOW ist, tue etwas anderes.
    • Der zweite Anwendungsfall: Wenn sich der Eingangszustand von LOW zu HIGH ändert, tue etwas. Wenn sich der Eingangszustand von HIGH zu LOW ändert, tue etwas anderes.

    Je nach Anwendung wird einer davon verwendet. Zum Beispiel bei der Steuerung einer LED mit einem Taster:

    • Wenn wir die LED einschalten möchten, solange der Taster gedrückt ist, und ausschalten, wenn der Taster NICHT gedrückt ist, SOLLTEN wir den ersten Fall verwenden.
    • Wenn wir die LED bei jedem Tasterdruck zwischen EIN und AUS umschalten möchten, SOLLTEN wir den zweiten Fall verwenden.

    Beispiel: Erkennen einer Zustandsänderung von LOW zu HIGH:

    #define BUTTON_PIN 21 // GPIO21 pin connected to button int prev_state = HIGH; // the previous state from the input pin int button_state; // the current reading from the input pin void setup() { Serial.begin(115200); // initialize the pushbutton pin as an pull-up input pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if(prev_state == LOW && button_state == HIGH) Serial.println("The state changed from LOW to HIGH"); // save the last state prev_state = button_state; }

    ESP32 S3 Code

    Der folgende Sketch konfiguriert GPIO21 als Eingang mit internem Pull-up-Widerstand, fragt dann kontinuierlich den Tasterzustand ab und gibt ihn alle 100 Millisekunden im Seriellen Monitor aus. Er ist der ideale Ausgangspunkt, um zu verstehen, wie der ESP32 S3 digitale Eingangssignale eines physischen Tasters liest.

    Schnelle Schritte

    1. Neu beim ESP32 S3? Absolvieren Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3.
    2. Bauteile verdrahten: Folgen Sie dem oben gezeigten Schaltplan.
    3. Board anschließen: Verbinden Sie den ESP32 S3 über ein USB-Kabel mit Ihrem Computer.
    4. Arduino IDE öffnen: Starten Sie die Software auf Ihrem Computer.
    5. Board auswählen: Wählen Sie ESP32 S3 und den richtigen COM-Port aus.
    6. Code hochladen: Kopieren Sie den folgenden Code und fügen Sie ihn in die Arduino IDE ein.
    /* * Dieser ESP32 S3 Code wurde von newbiely.de entwickelt * Dieser ESP32 S3 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-s3/esp32-s3-button */ #define BUTTON_PIN 21 // The ESP32 S3 pin GPIO21 pin connected to button void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(115200); // initialize the button pin as an pull-up input (HIGH when the switch is open and LOW when the switch is closed) pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: int button_state = digitalRead(BUTTON_PIN); // print out the button's state Serial.println(button_state); }
    1. Kompilieren und hochladen: Klicken Sie in der Arduino IDE auf die Schaltfläche Upload.
    Wie man ESP32 S3 Code in der Arduino IDE hochlädt
    1. Seriellen Monitor öffnen: Klicken Sie in der Arduino IDE auf das Symbol des Seriellen Monitors.
    Wie man den Seriellen Monitor in der Arduino IDE öffnet
    1. Taster testen: Drücken Sie den Taster mehrmals und lassen Sie ihn wieder los.
    2. Ergebnisse ansehen: Prüfen Sie die Ausgabe im Seriellen Monitor.
    3. Profi-Tipp: Lassen Sie die Baudrate des Seriellen Monitors auf 115200 eingestellt, passend zum Aufruf Serial.begin(115200) in Ihrem Sketch.

    Ausgabe im Seriellen Monitor

    ∞
    Newbiely | Arduino IDE 2.3.8
    ──
    ☐
    ✕
    File
    Edit
    Sketch
    Tools
    Help
    ESP32S3 Dev Module
    Newbiely.ino
    ···
    8 Serial.println("Hello World!");
    Output
    Serial Monitor
    Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
    New Line
    9600 baud
    [2026-06-16 10:23:41] 1 [2026-06-16 10:23:41] 1 [2026-06-16 10:23:42] 1 [2026-06-16 10:23:42] 0 [2026-06-16 10:23:42] 0 [2026-06-16 10:23:43] 0 [2026-06-16 10:23:43] 0 [2026-06-16 10:23:43] 0 [2026-06-16 10:23:44] 1 [2026-06-16 10:23:44] 1 [2026-06-16 10:23:44] 1 [2026-06-16 10:23:45] 1 [2026-06-16 10:23:45] 0 [2026-06-16 10:23:45] 0 [2026-06-16 10:23:46] 1 [2026-06-16 10:23:46] 1
    Ln 11, Col 1
    ESP32S3 Dev Module on COM15
    2

    Hinweis: 1 steht für HIGH (Taster losgelassen), 0 steht für LOW (Taster gedrückt).

    Zeilenweise Code-Erklärung

    Der obige ESP32 S3 Code enthält eine zeilenweise Erklärung. Bitte lesen Sie die Kommentare im Code!

    ESP32 S3 Code anpassen

    Erweitern wir den Code, um einzelne Drück- und Loslass-Ereignisse zu erkennen, anstatt einfach den Rohzustand auszulesen. Dieser Ansatz ist in realen Anwendungen nützlicher, in denen Sie eine Aktion genau in dem Moment auslösen müssen, in dem der Taster gedrückt oder losgelassen wird.

    Schnelle Schritte

    1. Umgebung einrichten: Wenn Sie den ESP32 S3 zum ersten Mal verwenden, lesen Sie, wie Sie die Umgebung für den ESP32 S3 in der Arduino IDE einrichten.
    2. Code ändern: Ersetzen Sie Ihren bisherigen Code durch den folgenden Code.
    /* * Dieser ESP32 S3 Code wurde von newbiely.de entwickelt * Dieser ESP32 S3 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-s3/esp32-s3-button */ #define BUTTON_PIN 21 // The ESP32 S3 pin GPIO21 pin connected to button int prev_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(115200); // initialize the button pin as an pull-up input (HIGH when the switch is open and LOW when the switch is closed) pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if (prev_state == HIGH && button_state == LOW) Serial.println("The button is pressed"); else if (prev_state == LOW && button_state == HIGH) Serial.println("The button is released"); // save the the last state prev_state = button_state; }
    1. Code hochladen: Kompilieren Sie den Code und laden Sie ihn auf Ihr ESP32 S3 Board hoch.
    2. Seriellen Monitor öffnen: Sehen Sie sich das Ausgabefenster an.
    3. Testen: Drücken Sie den Taster und lassen Sie ihn los.
    4. Ergebnisse beobachten: Prüfen Sie den Seriellen Monitor auf Ereignismeldungen.

    Ausgabe im Seriellen Monitor

    ∞
    Newbiely | Arduino IDE 2.3.8
    ──
    ☐
    ✕
    File
    Edit
    Sketch
    Tools
    Help
    ESP32S3 Dev Module
    Newbiely.ino
    ···
    8 Serial.println("Hello World!");
    Output
    Serial Monitor
    Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
    New Line
    9600 baud
    The button is pressed The button is released The button is pressed The button is pressed The button is released The button is pressed The button is released
    Ln 11, Col 1
    ESP32S3 Dev Module on COM15
    2

    ※ Notiz:

    • Der Serielle Monitor kann mehrere Drück- und Loslass-Ereignisse ausgeben, obwohl Sie den Taster nur einmal gedrückt und losgelassen haben. Dies ist ein normales Verhalten des Tasters und wird als "Prellphänomen" bezeichnet. In manchen Anwendungen benötigen wir eine Methode, um es zu beseitigen. Mehr dazu erfahren Sie im ESP32 S3 - Taster-Entprellung-Tutorial.
    • Um es Einsteigern einfacher zu machen, insbesondere bei der Verwendung mehrerer Taster, haben wir eine Bibliothek namens ezButton erstellt. Sie können hier mehr über die ezButton-Bibliothek erfahren.
    • Wenn Sie das Tastermodul verwenden, setzen Sie den Pin auf pinMode(BUTTON_PIN, INPUT). Das Modul gibt LOW aus, wenn es nicht gedrückt ist, und HIGH, wenn es gedrückt ist.

    Anwendungs-/Projektideen

    Der Taster ist ein Baustein, der unzählige Möglichkeiten für ESP32 S3 Projekte eröffnet, von einfachen Anzeigen bis hin zu komplexen Steuerungssystemen.

    1. LED-Steuerung: Schalten oder dimmen Sie eine LED per Tasterdruck, um neben dem Auslesen von Eingängen auch die Ausgabesteuerung zu lernen.
    2. Digitaler Zähler: Zählen Sie Tasterdrücke und zeigen Sie die Summe auf einem OLED-Display oder im Seriellen Monitor an — ideal, um das Verfolgen von Zuständen zu lernen.
    3. Quiz-Buzzer: Verbinden Sie mehrere Taster mit verschiedenen GPIO-Pins des ESP32 S3 für ein Mehrspieler-Buzzersystem.
    4. Sicherheitsalarm: Aktivieren Sie einen Alarm oder senden Sie eine WLAN-Benachrichtigung, wenn ein Taster für eine bestimmte Dauer gedrückt wird.
    5. Musiksteuerung: Steuern Sie die Audiowiedergabe (Abspielen, Pause, Überspringen), indem Sie verschiedene Drückmuster Aktionen zuordnen.
    6. Intelligenter Lichtschalter: Ersetzen Sie einen herkömmlichen Wandschalter durch einen ESP32 S3 Taster, der das Licht zusätzlich per WLAN aus der Ferne steuert.

    Video-Bereich

    Sehen Sie sich unten die Schritt-für-Schritt-Videoanleitung zu diesem ESP32 S3 Projekt an.

    Herausforderungen

    Diese Übungen vertiefen Ihr Verständnis der Tastereingabe am ESP32 S3 und reichen von grundlegenden Verdrahtungsübungen bis zu anspruchsvolleren Interaktionsmustern.

    1. Anfänger: Fügen Sie eine LED hinzu, die leuchtet, solange der Taster gedrückt gehalten wird, und beim Loslassen erlischt.
    2. Anfänger: Zählen Sie, wie oft der Taster gedrückt wird, und geben Sie die laufende Summe im Seriellen Monitor aus.
    3. Fortgeschritten: Bauen Sie eine Langdruck-Erkennung, die je nachdem, ob der Druck kürzer oder länger als eine Sekunde ist, eine andere Aktion auslöst.
    4. Fortgeschritten: Implementieren Sie eine Software-Entprellung ohne Bibliothek, um fälschlich erkannte Mehrfachdrücke zu vermeiden.
    5. Experte: Erstellen Sie ein Zahlenschloss mit drei Tastern — nur die richtige Drückreihenfolge entriegelt einen simulierten Ausgang.

    Zusätzliches Wissen

    Zu verstehen, wann Pull-up- oder Pull-down-Widerstände eingesetzt werden, ist ein wichtiges Konzept für den Bau zuverlässiger ESP32 S3 Projekte mit digitalen Eingängen.

    Wann Pull-up-/Pull-down-Widerstände verwendet werden:

    • SOLLTEN verwendet werden: Sensoren mit zwei Zuständen (offen/geschlossen) benötigen Widerstände, um eindeutige HIGH/LOW-Signale zu erzeugen
      • Beispiele: Drucktaster, Schalter, Magnetkontaktschalter (Türsensor)
    • SOLLTEN NICHT verwendet werden: Sensoren, die Spannungspegel (LOW/HIGH) ausgeben, benötigen keine Widerstände

    Sprachreferenzen

    ※ 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!