ESP32 S3 - Taster - Langer Druck, kurzer Druck
Dieses Tutorial zeigt Ihnen, wie Sie Ihren ESP32 S3 so programmieren, dass er sowohl lange als auch kurze Tastendrücke erkennt. Sie lernen alles von der grundlegenden Verdrahtung und Entprelltechniken bis hin zur Kombination mehrerer Druckarten an einem einzigen Taster für eine leistungsfähigere Eingabeverarbeitung.
Was Sie bauen werden:
- Einen Detektor für kurze Drücke, der eine Druckdauer unter einem Schwellenwert misst
- Einen Detektor für lange Drücke, der beim Loslassen oder während des Drückens auslöst
- Einen Taster mit zwei Modi, der kurze und lange Drücke am selben Pin unterscheidet
- Eine entprellte Version mit der ezButton-Bibliothek für praxistaugliche Zuverlässigkeit

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) |
Verdrahtungsdiagramm
Schließen Sie Ihren Taster an den ESP32 S3 an, indem Sie einen Anschluss mit einem GPIO-Pin und den anderen mit GND verbinden. Der interne Pull-up-Widerstand wird per Software aktiviert, sodass kein externer Widerstand erforderlich ist.
Sicherheitshinweise
Überprüfen Sie Ihre Verdrahtung immer, bevor Sie das Board mit Strom versorgen. Mit einem Steckbrett können Sie Änderungen einfach ohne Löten vornehmen. Da dieses Tutorial den internen Pull-up-Widerstand verwendet, liest der Tasterzustand im losgelassenen Zustand HIGH und im gedrückten Zustand LOW – denken Sie daran, wenn Sie den Code lesen.
| Bauteil-Pin | ESP32 S3 Pin |
|---|---|
| Taster Anschluss 1 | GPIO 9 |
| Taster Anschluss 2 | GND |

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Wie man einen kurzen Druck erkennt
Um einen kurzen Druck am ESP32 S3 zu erkennen, wird die Dauer zwischen dem Drück-Ereignis und dem Loslass-Ereignis gemessen. Liegt diese Dauer unter einem festgelegten Schwellenwert, gilt der kurze Druck als bestätigt.
Methode zur Erkennung eines kurzen Drucks:
- Die Zeit zwischen dem Drück- und dem Loslass-Ereignis messen
- Ist die Dauer kürzer als eine vordefinierte Zeit, wird ein kurzer Druck erkannt
- Die Druckdauer mit Ihrem Schwellenwert SHORT_PRESS_TIME vergleichen
Schrittweise Umsetzung:
- Festlegen, wie lange ein kurzer Druck maximal dauert
- Erkennen, dass der Taster gedrückt wird, und den Zeitpunkt des Drückens speichern
- Erkennen, dass der Taster losgelassen wird, und den Zeitpunkt des Loslassens speichern
- Die Druckdauer berechnen und
- Den kurzen Druck bestimmen, indem die Druckdauer mit der definierten Zeit für einen kurzen Druck verglichen wird
ESP32 S3 Code zur Erkennung eines kurzen Drucks
Der folgende Sketch liest den Tasterzustand mit dem internen Pull-up-Widerstand des ESP32 S3 aus, berechnet die Dauer zwischen Drücken und Loslassen und gibt eine Meldung im Seriellen Monitor aus, wenn ein kurzer Druck erkannt wird. Der Schwellenwert ist standardmäßig auf 500 ms eingestellt und kann an Ihre Anwendung angepasst werden.
Schnelle Schritte
- Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
- IDE einrichten: Siehe wie man die Umgebung für den ESP32 S3 in der Arduino IDE einrichtet
- Code hochladen: Kopieren Sie den obigen Code und laden Sie ihn über die Arduino IDE auf Ihren ESP32 S3 hoch
- Hardware verdrahten: Schließen Sie den Taster gemäß dem Schaltplan an Ihren ESP32 S3 an
- Taster testen: Drücken Sie den Taster mehrmals kurz
- Ergebnisse prüfen: Öffnen Sie den Seriellen Monitor (115200 Baud), um die Erkennungsergebnisse zu sehen
- Profi-Tipp: Passen Sie den Wert SHORT_PRESS_TIME an, um die Erkennung kurzer Drücke schneller oder langsamer zu machen
※ Notiz:
Der Serielle Monitor kann bei einem einzigen Druck mehrere kurze Drücke ausgeben. Das ist ein normales Verhalten des Tasters und wird "Prellen" genannt. Wie Sie dieses Problem beseitigen, lernen Sie später in diesem Tutorial.
Wie man einen langen Druck erkennt
Es gibt zwei Methoden, um lange Tastendrücke am ESP32 S3 zu erkennen, die jeweils für unterschiedliche Anforderungen geeignet sind. Die erste Methode erkennt den langen Druck nach dem Loslassen des Tasters, die zweite erkennt ihn in Echtzeit, während der Taster gedrückt gehalten wird.
Zwei Anwendungsfälle für die Erkennung eines langen Drucks:
- Der lange Druck wird direkt nach dem Loslassen des Tasters erkannt
- Der lange Druck wird erkannt, während der Taster gedrückt wird
Erste Methode (Erkennung beim Loslassen):
- Die Zeitdauer zwischen dem Drück- und dem Loslass-Ereignis messen
- Ist die Dauer länger als eine vordefinierte Zeit, wird ein langer Druck erkannt
Zweite Methode (Erkennung während des Drückens):
- Die Druckzeit fortlaufend messen, solange der Taster gehalten wird
- Überschreitet die Dauer die vordefinierte Zeit, wird sofort ein langer Druck erkannt
- Weiter prüfen, bis der Taster losgelassen wird
ESP32 S3 Code zur Erkennung eines langen Drucks beim Loslassen
Dieser Sketch misst die gesamte Druckdauer vom Moment des Drückens bis zum Loslassen. Überschreitet die Dauer LONG_PRESS_TIME (1000 ms), wird der lange Druck im Seriellen Monitor gemeldet. Diese Methode eignet sich am besten, wenn Sie sicherstellen möchten, dass der Benutzer den Taster die volle Zeit gehalten hat, bevor eine Aktion ausgeführt wird.
Schnelle Schritte
- Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
- IDE einrichten: Siehe wie man die Umgebung für den ESP32 S3 in der Arduino IDE einrichtet
- Code hochladen: Kopieren Sie den obigen Code und laden Sie ihn über die Arduino IDE auf den ESP32 S3 hoch
- Langen Druck testen: Drücken und halten Sie den Taster länger als eine Sekunde und lassen Sie ihn dann los
- Seriellen Monitor prüfen: Öffnen Sie den Seriellen Monitor mit 115200 Baud, um die Ergebnisse zu sehen
- Profi-Tipp: Diese Methode eignet sich am besten, wenn die Aktion nach dem Loslassen des Tasters erfolgen soll und nicht während des Drückens
ESP32 S3 Code zur Erkennung eines langen Drucks während des Drückens
Dieser Sketch prüft die Druckdauer fortlaufend, während der Taster gehalten wird, und löst die Erkennung des langen Drucks in dem Moment aus, in dem der Schwellenwert überschritten wird – ohne auf das Loslassen des Tasters zu warten. Das ist ideal für Anwendungen, die eine sofortige Rückmeldung erfordern, etwa das Auslösen eines Werksresets, während der Taster noch gehalten wird.
Schnelle Schritte
- Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
- IDE einrichten: Siehe wie man die Umgebung für den ESP32 S3 in der Arduino IDE einrichtet
- Code hochladen: Laden Sie den obigen Code über die Arduino IDE auf Ihren ESP32 S3 hoch
- Während des Drückens testen: Drücken und halten Sie den Taster mehrere Sekunden lang (nicht sofort loslassen)
- Timing beobachten: Beachten Sie, dass die Erkennung erfolgt, während Sie noch drücken
- Profi-Tipp: Diese Methode liefert eine sofortige Rückmeldung und eignet sich besser für zeitkritische Anwendungen wie Werksreset-Funktionen
Wie man sowohl einen langen als auch einen kurzen Druck erkennt
Durch die Kombination beider Prüfungen der Druckdauer in einem einzigen Sketch kann ein Taster an Ihrem ESP32 S3 zwei völlig unabhängige Funktionen steuern. Das verringert die Anzahl der Bauteile und vereinfacht Ihre Schaltung, ohne die Bedienbarkeit einzuschränken.
Kurzer und langer Druck nach dem Loslassen
Dieser Sketch unterscheidet kurze und lange Drücke anhand der Dauer, die der Taster gehalten wurde, und trifft die Entscheidung erst nach dem Loslassen des Tasters. Ein einziger Schwellenwert LONG_PRESS_TIME trennt die beiden Verhaltensweisen und ermöglicht zwei verschiedene Aktionen mit einem Taster ohne zusätzliche Hardware.
Schnelle Schritte
- Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
- IDE einrichten: Siehe wie man die Umgebung für den ESP32 S3 in der Arduino IDE einrichtet
- Code hochladen: Laden Sie den obigen Code über die Arduino IDE auf den ESP32 S3 hoch
- Beide Arten testen: Probieren Sie sowohl einen langen Druck (>1 Sekunde halten) als auch einen kurzen Druck (kurzes Antippen)
- Seriellen Monitor prüfen: Öffnen Sie den Seriellen Monitor, um zu sehen, welche Druckart erkannt wird
- Profi-Tipp: Stellen Sie LONG_PRESS_TIME passend zum erwarteten Verhalten Ihrer Benutzer ein (typischerweise funktionieren 500–1500 ms gut)
※ Notiz:
Der Serielle Monitor kann bei einem langen Druck mehrere kurze Drücke anzeigen. Das ist ein normales Verhalten des Tasters und wird "Prellen" genannt. Das Problem wird im letzten Teil dieses Tutorials gelöst.
Kurzer und langer Druck während des Drückens
Dieser Sketch erkennt einen langen Druck sofort, wenn der Schwellenwert erreicht ist, und erkennt trotzdem einen kurzen Druck beim Loslassen, falls der Schwellenwert nie erreicht wurde. So erhalten Sie die schnellstmögliche Reaktion auf lange Drücke, während die Erkennung kurzer Drücke voll funktionsfähig bleibt.
Schnelle Schritte
- Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
- IDE einrichten: Siehe wie man die Umgebung für den ESP32 S3 in der Arduino IDE einrichtet
- Code hochladen: Laden Sie den Code über die Arduino IDE auf Ihren ESP32 S3 hoch
- Timing testen: Probieren Sie kurzes Antippen und langes Halten, um die unterschiedlichen Verhaltensweisen zu sehen
- Reaktion beobachten: Beachten Sie, dass der lange Druck sofort auslöst und nicht erst beim Loslassen
- Profi-Tipp: Diese Methode verhindert versehentliches Auslösen eines langen Drucks, da Benutzer sofort eine Rückmeldung erhalten
Langer und kurzer Druck mit Entprellung
Mechanische Taster erzeugen beim Öffnen und Schließen ihrer Kontakte elektrische Störungen, wodurch der Mikrocontroller bei einem einzigen physischen Druck mehrere Übergänge liest. Die Entprellung filtert diese Störungen heraus und ist für eine zuverlässige Erkennung langer und kurzer Drücke am ESP32 S3 unerlässlich.
Die ezButton-Bibliothek übernimmt die gesamte Entprelllogik automatisch und ist daher sowohl für Einsteiger als auch für Serienprojekte der empfohlene Ansatz. Sie funktioniert zuverlässig mit mehreren Tastern und lässt sich sauber mit der in den vorherigen Abschnitten verwendeten Logik zur Druckdauer kombinieren.
Kurzer und langer Druck mit Entprellung nach dem Loslassen
Dieser Sketch kombiniert die Entprellung der ezButton-Bibliothek mit der Erkennung der Druckart nach dem Loslassen. Er beseitigt Fehlerkennungen durch Tasterprellen und unterscheidet gleichzeitig zuverlässig zwischen kurzen und langen Drücken – ein praxistauglicher Eingabe-Handler für Ihr ESP32 S3 Projekt.
Schnelle Schritte
- Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
- IDE einrichten: Siehe wie man die Umgebung für den ESP32 S3 in der Arduino IDE einrichtet
- Bibliothek installieren: Installieren Sie die ezButton-Bibliothek – siehe Anleitung
- Code hochladen: Laden Sie den obigen Code über die Arduino IDE auf den ESP32 S3 hoch
- Saubere Erkennung testen: Probieren Sie lange und kurze Drücke – keine doppelten Erkennungen mehr
- Ergebnisse prüfen: Öffnen Sie den Seriellen Monitor, um die saubere, genaue Erkennung der Tastendrücke zu sehen
- Profi-Tipp: Die ezButton-Bibliothek beseitigt alle Prellprobleme automatisch – verwenden Sie sie für alle Serienprojekte
Kurzer und langer Druck mit Entprellung während des Drückens
Dieser Sketch ergänzt die Echtzeit-Erkennung langer Drücke um die Entprellung von ezButton und kombiniert so eine sofortige Reaktion auf lange Drücke mit einer sauberen Störfilterung. Dies ist die zuverlässigste Methode für ESP32 S3 Projekte, bei denen sowohl Genauigkeit als auch Reaktionsschnelligkeit gefragt sind.
Schnelle Schritte
- Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
- IDE einrichten: Siehe wie man die Umgebung für den ESP32 S3 in der Arduino IDE einrichtet
- Bibliothek installieren: Installieren Sie die ezButton-Bibliothek – siehe Anleitung
- Code hochladen: Laden Sie den Code über die Arduino IDE auf Ihren ESP32 S3 hoch
- Zuverlässigkeit testen: Drücken Sie den Taster mehrmals – es gibt keine doppelten Messwerte
- Methoden vergleichen: Dies ist die zuverlässigste Methode für ESP32 S3 Serienprojekte
- Profi-Tipp: Verwenden Sie diese Methode für kritische Anwendungen wie Geräte-Resets oder wichtige Bedienelemente, bei denen Genauigkeit entscheidend ist
Warum langer und kurzer Druck nützlich sind
Wenn Sie Ihren ESP32 S3 Projekten eine Erkennung mehrerer Druckarten hinzufügen, erhalten Sie mehr Funktionen aus einem einzigen Taster, ohne die Hardware komplexer zu machen.
- Pins sparen: Ein einziger Taster kann zwei oder mehr Funktionen steuern (kurzer Druck für Licht, langer Druck für Ventilator)
- Unfälle vermeiden: Verwenden Sie einen langen Druck für kritische Funktionen wie den Werksreset, um versehentliches Auslösen zu verhindern
- Bessere Bedienbarkeit: Benutzer können mehrere Aktionen ohne zusätzliche Hardware ausführen
- Kostenersparnis: Weniger Taster bedeuten einfachere Schaltungen und geringere Bauteilkosten
- Platzsparend: Ideal für kompakte ESP32 S3 Projekte mit wenig Platz
- Professionelles Design: Multifunktionstaster sind Standard in der Unterhaltungselektronik
Anwendungsideen
Die Erkennung langer und kurzer Drücke eröffnet viele praktische Anwendungsfälle für Ihre ESP32 S3 Projekte.
- Smart-Home-Lichtsteuerung: kurzer Druck für Ein/Aus, langer Druck für den Dimmmodus
- Alarmanlage: kurzer Druck zum Scharf-/Unscharfschalten, langer Druck für den Panikmodus
- Timer-Gerät: kurzer Druck zum Starten/Stoppen, langer Druck zum Zurücksetzen
- Multifunktions-Thermostat: kurzer Druck passt die Temperatur an, langer Druck wechselt zwischen Heiz- und Kühlmodus
- IoT-Türschloss: kurzer Druck zum vorübergehenden Entriegeln, langer Druck für dauerhaftes Entriegeln
- Batteriebetriebener Sensor: kurzer Druck zum Prüfen des Status, langer Druck zum Wechsel in den Tiefschlafmodus
Video Section
Sehen Sie sich unten die Schritt-für-Schritt-Videoanleitung für dieses ESP32 S3 Projekt an.