ESP32 S3 - Taster - Entprellen
Mechanische Taster sind scheinbar einfache Bauteile, haben aber eine Eigenheit, die Ihre ESP32 S3 Projekte durcheinanderbringen kann: das Prellen. Dieses Tutorial erklärt, was Prellen ist, warum es wichtig ist und wie Sie es sowohl mit reinem Arduino-Code als auch mit der ezButton-Bibliothek beseitigen.
Was Sie bauen werden:
- Einen Test-Sketch, der das Prellen eines Tasters ohne Entprellung zeigt
- Einen Sketch mit entprelltem Taster, der manuelles Timing mit millis() nutzt
- Ein Beispiel zur Entprellung eines einzelnen Tasters mit der ezButton-Bibliothek
- Ein Beispiel zur Entprellung mehrerer Taster, das drei Taster gleichzeitig verarbeitet

Wenn Sie einen Taster drücken, wechselt sein Zustand dann nur einmal von LOW auf HIGH (oder von HIGH auf LOW)? Nicht ganz! In der Praxis führt ein einziger Tastendruck dazu, dass der Zustand mehrmals sehr schnell zwischen LOW und HIGH hin- und herspringt. Das ist eine physikalische Eigenschaft mechanischer Taster und wird Prellen genannt. Durch das Prellen liest Ihr ESP32 S3 mehrere Tastendrücke, obwohl Sie nur einmal gedrückt haben, was zu Fehlern in Ihren Projekten führt. Die Lösung für dieses Problem heißt Tasterentprellung.

Dieses Tutorial behandelt:
- Entprellen eines einzelnen Tasters mit eigenem ESP32 S3 Code
- Verwenden der ezButton-Bibliothek für eine einfache Entprellung
- Verarbeiten mehrerer Taster mit Entprellung am ESP32 S3
- Vergleich der Ergebnisse mit und ohne Entprellung
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 einen einzelnen Taster an Ihren ESP32 S3 an, indem Sie einen Pin mit GPIO7 und den anderen Pin mit GND verbinden. Den Rest übernimmt der interne Pull-up-Widerstand des ESP32 S3, sodass kein externer Widerstand erforderlich ist.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Sicherheitshinweise
Schließen Sie den Taster immer zwischen einem GPIO-Pin und GND an und nicht direkt an 3,3V, da der Code auf die interne Pull-up-Konfiguration angewiesen ist. Vermeiden Sie es, während der Entwicklung Taster an GPIO0 anzuschließen, da dieser Pin beim ESP32 S3 vom Bootloader verwendet wird.
| Taster-Pin | ESP32 S3 Pin |
|---|---|
| Ein Pin | GPIO7 |
| Anderer Pin | GND |
Um den Unterschied deutlich zu sehen, führen wir zuerst ESP32 S3 Code OHNE Entprellung und dann MIT Entprellung aus und vergleichen die Ergebnisse.
Taster ohne Entprellung auslesen
Schnelle Schritte
- Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
- Verdrahten Sie die Komponenten: Folgen Sie dem obigen Schaltplan, um den Taster mit Pin GPIO7 zu verbinden.
- Verbinden Sie das Board: Schließen Sie Ihren ESP32 S3 über ein USB-Typ-C-Kabel an Ihren Computer an.
- Öffnen Sie die Arduino IDE: Starten Sie die Arduino IDE auf Ihrem Computer.
- Wählen Sie Ihr Board: Wählen Sie im Menü Tools „ESP32S3 Dev Module“ und den richtigen COM-Port.
- Laden Sie den Code hoch: Kopieren Sie den folgenden Code und laden Sie ihn auf Ihr ESP32 S3 Board hoch.
- Öffnen Sie den Seriellen Monitor: Klicken Sie auf das Symbol des Seriellen Monitors, um die Ausgabe zu sehen.
- Testen Sie den Taster: Drücken Sie den Taster einmal, halten Sie ihn einige Sekunden gedrückt und lassen Sie ihn dann los.
- Beobachten Sie die Ergebnisse: Sehen Sie sich die Ausgabe im Seriellen Monitor an, die mehrere Drück-/Loslass-Ereignisse zeigt.
- Profi-Tipp: Wenn Sie das Prellen nicht sofort sehen, drücken Sie den Taster mehrmals – es handelt sich um ein zufälliges Phänomen, das nur zeitweise auftritt.


Ausgabe des Seriellen Monitors:
⇒ Wie Sie sehen, haben Sie den Taster nur einmal gedrückt und einmal losgelassen, aber der ESP32 S3 hat aufgrund des Prellens mehrere Drück- und Loslassvorgänge erkannt.
※ Notiz:
Das Prellen tritt nicht immer auf. Wenn es nicht auftritt, wiederholen Sie den obigen Test bitte mehrmals, um es zu beobachten.
Taster mit Entprellung auslesen
Dieser Sketch beseitigt das Prellen, indem er auf Ihrem ESP32 S3 eine Tasterentprellung umsetzt. Er speichert den Zeitstempel, wenn sich der Tasterzustand zum ersten Mal ändert, und wartet dann eine kurze, einstellbare Zeit, bevor er den neuen Zustand bestätigt – schnelle Schwankungen in diesem Zeitfenster werden verworfen. Dadurch werden nur stabile, beabsichtigte Tastendrücke und Loslassvorgänge an Ihre Anwendung gemeldet.
Schnelle Schritte
- Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
- Kopieren Sie den Code: Kopieren Sie den folgenden Entprell-Code in die Arduino IDE.
- Laden Sie den Code hoch: Klicken Sie auf die Schaltfläche Upload, um Ihren ESP32 S3 zu programmieren.
- Öffnen Sie den Seriellen Monitor: Klicken Sie auf das Symbol des Seriellen Monitors, um die Ausgabe zu sehen.
- Testen Sie den Taster: Drücken Sie den Taster, halten Sie ihn einige Sekunden gedrückt und lassen Sie ihn dann los.
- Beobachten Sie die Ergebnisse: Sie sehen jetzt nur noch ein Drück- und ein Loslass-Ereignis.
- Profi-Tipp: Wenn weiterhin Prellen auftritt, erhöhen Sie den Wert DEBOUNCE_TIME von 50 auf 100 Millisekunden.
Ausgabe des Seriellen Monitors:
⇒ Perfekt! Sie haben einmal gedrückt und einmal losgelassen, und der ESP32 S3 hat korrekt einen Druck und ein Loslassen erkannt. Das Prellen wurde durch eine ordentliche Tasterentprellung beseitigt.
Wir haben es vereinfacht - ESP32 S3 Code zur Tasterentprellung mit Bibliothek
Wir haben die ezButton-Bibliothek entwickelt, um das Entprellen von Tastern deutlich zu vereinfachen, besonders wenn Sie mit mehreren Tastern an Ihrem ESP32 S3 arbeiten. Anstatt Timing-Variablen manuell zu verwalten, übernimmt die Bibliothek die gesamte Entprelllogik intern und sorgt für sauberen, gut lesbaren Code – egal wie viele Taster Sie verwenden.
Mehr erfahren: Dokumentation der ezButton-Bibliothek
ESP32 S3 Code zur Entprellung eines einzelnen Tasters
Der folgende Sketch zeigt, wie Sie einen einzelnen Taster mit der ezButton-Bibliothek am ESP32 S3 entprellen. Nachdem Sie die Bibliothek eingebunden und die Entprellzeit festgelegt haben, erkennen Sie ein Drücken oder Loslassen ganz einfach, indem Sie isPressed() oder isReleased() in der Hauptschleife aufrufen.
ESP32 S3 Code zur Entprellung mehrerer Taster
Dieser Sketch zeigt, wie Sie mit der ezButton-Bibliothek drei Taster gleichzeitig an Ihrem ESP32 S3 entprellen. Jeder Taster erhält ein eigenes ezButton-Objekt, und durch den Aufruf von .loop() für alle drei in der Hauptschleife wird der Entprellzustand jedes Tasters unabhängig aktuell gehalten.
Der Schaltplan
Schließen Sie drei Taster wie unten gezeigt an Ihren ESP32 S3 an.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
| Taster | ESP32 S3 Pin |
|---|---|
| Taster 1 | D5 und GND |
| Taster 2 | D6 und GND |
| Taster 3 | D7 und GND |
Ausgabe des Seriellen Monitors:
Anwendungsideen
Die Tasterentprellung ist eine grundlegende Technik, die eine zuverlässige Eingabeverarbeitung in vielen ESP32 S3 Projekten ermöglicht. Hier einige praktische Anwendungen, bei denen eine genaue Erkennung von Tastendrücken entscheidend ist:
- Türschlosssysteme: Tastenfeld-Zugangssysteme, bei denen jeder Tastendruck genau einmal registriert werden muss.
- Gamecontroller: Reaktionsschnelle Tastereingaben für selbstgebaute Spielgeräte auf Basis des ESP32 S3.
- Fernbedienungen für die Hausautomation: Zuverlässige Steuerung von Licht, Ventilatoren oder Geräten über eigene Bedienfelder.
- Menünavigation: Navigation mit mehreren Tastern in OLED- oder TFT-Menüs auf ESP32 S3 Geräten.
- Ereigniszähler: Zählschaltungen, die pro physischem Druck genau einmal hochzählen.
- Sicherheits-Tastenfelder: Alarm- oder Zugangskontrollsysteme, die eine zuverlässige Eingabeerkennung erfordern.
Video Tutorial
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.
Sehen Sie sich unten die Schritt-für-Schritt-Videoanleitung für dieses ESP32 S3 Projekt an.
Fordern Sie sich heraus
Das Üben der Entprellung mit zunehmend komplexeren Szenarien ist der beste Weg, Sicherheit im Umgang mit Eingaben am ESP32 S3 zu gewinnen. Probieren Sie diese Herausforderungen aus, um Ihr Verständnis zu vertiefen:
- Einsteiger: Ändern Sie den Wert DEBOUNCE_TIME auf 20 ms, 50 ms und 100 ms und beobachten Sie, wie sich jeder Wert auf die Tasterreaktion Ihres ESP32 S3 auswirkt.
- Fortgeschritten: Fügen Sie eine LED hinzu, die bei jedem entprellten Tastendruck ein- und ausschaltet, und zeigen Sie so eine saubere Zustandsverwaltung.
- Fortgeschritten: Bauen Sie einen Zähler, der pro Tastendruck nur einmal hochzählt und die laufende Summe im Seriellen Monitor anzeigt.
- Experte: Implementieren Sie ein Menüsystem mit 4 Tastern, bei dem jeder entprellte Taster eine eigene Aktion auf dem ESP32 S3 ausführt.
- Experte: Fügen Sie eine Erkennung für langes Drücken hinzu, sodass ein kurzer Druck und ein Gedrückthalten mit einem einzigen Taster unterschiedliche Aktionen auslösen.
Zusätzliches Wissen
Wichtige Tipps zur Entprellung am ESP32 S3:
- Der Wert DEBOUNCE_TIME hängt von Ihrer konkreten Taster-Hardware ab
- Verschiedene Taster können unterschiedliche Entprellzeiten erfordern (typischerweise 20-100 ms)
- Beginnen Sie mit 50 ms und passen Sie den Wert an, wenn weiterhin Prellen auftritt
- Entprelltechniken funktionieren auch für Schalter, Endschalter, Reedschalter und Berührungssensoren
- Hardware-Entprellung (mit Kondensatoren) kann bei kritischen Anwendungen die Software-Entprellung ergänzen