ESP32 C3 Super Mini - Taster - Entprellen

Lernen Sie, wie Sie das Prellen von Tastern an Ihrem ESP32 C3 Super Mini mit geeigneten Entprelltechniken beseitigen. Dieses Tutorial zeigt Ihnen einfache Methoden, um Tastendrücke zuverlässig zu verarbeiten.

In diesem Tutorial lernen Sie:

ESP32 C3 Super Mini - Taster - Entprellen

Wenn Sie einen Taster drücken, wechselt sein Zustand dann nur einmal von LOW zu HIGH (oder von HIGH zu LOW)? Nicht ganz! In der Praxis führt ein einziger Tastendruck dazu, dass der Zustand sehr schnell mehrmals zwischen LOW und HIGH wechselt. Dies ist eine physikalische Eigenschaft mechanischer Taster und wird Prellen genannt. Durch das Prellen erkennt Ihr ESP32 C3 Super Mini 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.

ESP32 C3 Super Mini Prellphänomen

Dieses Tutorial behandelt:

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×Breadboard-Taster mit Kappe
1×Breadboard-Taster-Kit
1×Panel-Drucktaster
1×Taster-Modul
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 Button

Taster sind Eingabegeräte, die erkennen, wann sie gedrückt oder losgelassen werden.

Wir haben ein eigenes Tutorial, das alles über Taster mit dem ESP32 C3 Super Mini behandelt:

  • Vollständige Details zur Pinbelegung
  • Wie Taster funktionieren
  • Verdrahtung
  • Codebeispiele
  • Schritt-für-Schritt-Anleitungen

Mehr erfahren: ESP32 C3 Super Mini - Taster-Tutorial

Verdrahtungsdiagramm

Der folgende Schaltplan zeigt, wie Sie einen Taster an Ihren ESP32 C3 Super Mini anschließen.

Schaltplan ESP32 C3 Super Mini Taster

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

Taster-Pin ESP32 C3 Super Mini Pin
Ein Pin GPIO7
Anderer Pin GND

Um den Unterschied deutlich zu sehen, führen wir zuerst ESP32 C3 Super Mini Code OHNE Entprellung aus, dann MIT Entprellung, und vergleichen die Ergebnisse.

Taster ohne Entprellung auslesen

Schnelle Schritte

  • Neu bei Arduino? Beginnen Sie zuerst mit unserer Anleitung ESP32 C3 Super Mini - Erste Schritte.
  • Bauteile verdrahten: Folgen Sie dem oben gezeigten Schaltplan, um den Taster mit Pin GPIO7 zu verbinden.
  • Board anschließen: Verbinden Sie Ihren ESP32 C3 Super Mini mit einem USB-Type-C-Kabel mit Ihrem Computer.
  • Arduino IDE öffnen: Starten Sie die Arduino IDE auf Ihrem Computer.
  • Board auswählen: Wählen Sie im Menü Tools "ESP32 C3 Super Mini" und den richtigen COM-Port.
  • Code hochladen: Kopieren Sie den folgenden Code und laden Sie ihn auf Ihr ESP32 C3 Super Mini Board hoch.
  • Serial Monitor öffnen: Klicken Sie auf das Serial-Monitor-Symbol, um die Ausgabe anzuzeigen.
  • Taster testen: Drücken Sie den Taster einmal, halten Sie ihn einige Sekunden gedrückt und lassen Sie ihn dann los.
  • Ergebnisse beobachten: Beobachten Sie die Ausgabe im Serial Monitor, die mehrere Drück-/Loslass-Ereignisse zeigt.
  • Profi-Tipp: Wenn Sie das Prellen nicht sofort sehen, drücken Sie den Taster mehrmals - es ist ein zufälliges Phänomen, das nur gelegentlich auftritt.
/* * 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-button-debounce */ #define BUTTON_PIN 7 // The ESP32 C3 SuperMini pin GPIO7 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; }
Code in der Arduino IDE hochladen
So öffnen Sie den Serial Monitor in der Arduino IDE

Ausgabe im Serial Monitor:

∞
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
The button is pressed The button is pressed The button is pressed The button is pressed The button is released The button is released The button is released
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

⇒ Wie Sie sehen, haben Sie den Taster nur einmal gedrückt und einmal losgelassen, aber der ESP32 C3 Super Mini hat aufgrund des Prellens mehrere Drück- und Loslass-Ereignisse 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 Code beseitigt das Prellen, indem er eine Tasterentprellung auf Ihrem ESP32 C3 Super Mini implementiert.

Was dieser Entprell-Code macht:

  • Speichert den Zeitpunkt, an dem sich der Tasterzustand ändert
  • Wartet eine kurze Verzögerung (Entprellzeit), bevor die Änderung bestätigt wird
  • Ignoriert schnelle Zustandswechsel während der Entprellzeit
  • Meldet nur stabile Drück- und Loslass-Ereignisse

Schnelle Schritte

  • Neu bei Arduino? Beginnen Sie zuerst mit unserer Anleitung ESP32 C3 Super Mini - Erste Schritte.
  • Code kopieren: Kopieren Sie den folgenden Entprell-Code in die Arduino IDE.
  • Code hochladen: Klicken Sie auf die Schaltfläche Upload, um Ihren ESP32 C3 Super Mini zu programmieren.
  • Serial Monitor öffnen: Klicken Sie auf das Serial-Monitor-Symbol, um die Ausgabe anzuzeigen.
  • Taster testen: Drücken Sie den Taster, halten Sie ihn einige Sekunden gedrückt und lassen Sie ihn dann los.
  • Ergebnisse beobachten: Sie sehen nun nur noch ein Drück- und ein Loslass-Ereignis.
  • Profi-Tipp: Wenn Sie immer noch Prellen sehen, erhöhen Sie den Wert DEBOUNCE_TIME von 50 auf 100 Millisekunden.
/* * 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-button-debounce */ #define BUTTON_PIN 7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button #define DEBOUNCE_TIME 50 // The debounce time in millisecond, increase this time if it still chatters int prev_state_steady = LOW; // The previous steady state from the input pin int prev_state_flick = LOW; // The previous flickerable state from the input pin int button_state; // The current reading from the input pin unsigned long last_debounce_time = 0; // The last time the output pin was toggled 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); // check to see if you just pressed the button // (i.e. the input went from LOW to HIGH), and you've waited long enough // since the last press to ignore any noise: // If the switch/button changed, due to noise or pressing: if (button_state != prev_state_flick) { // reset the debouncing timer last_debounce_time = millis(); // save the the last flickerable state prev_state_flick = button_state; } if ((millis() - last_debounce_time) > DEBOUNCE_TIME) { // whatever the reading is at, it's been there for longer than the debounce // delay, so take it as the actual current state: // if the button state has changed: if(prev_state_steady == HIGH && button_state == LOW) Serial.println("The button is pressed"); else if(prev_state_steady == LOW && button_state == HIGH) Serial.println("The button is released"); // save the the last steady state prev_state_steady = button_state; } }

Ausgabe im Serial Monitor:

∞
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
The button is pressed The button is released
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

⇒ Perfekt! Sie haben einmal gedrückt und einmal losgelassen, und der ESP32 C3 Super Mini hat korrekt ein Drücken und ein Loslassen erkannt. Das Prellen wurde durch eine korrekte Tasterentprellung beseitigt.

Wir haben es einfach gemacht - ESP32 C3 Super Mini Code zur Tasterentprellung mit Bibliothek

Wir haben die ezButton-Bibliothek entwickelt, um das Entprellen von Tastern deutlich zu vereinfachen, insbesondere wenn Sie mit mehreren Tastern an Ihrem ESP32 C3 Super Mini arbeiten.

Vorteile der ezButton-Bibliothek:

  • Einfache Einrichtung der Tasterentprellung in einer Zeile
  • Sauberer, gut lesbarer Code
  • Einfache Verwaltung mehrerer Taster
  • Eingebaute Funktionen zur Erkennung von Drücken und Loslassen
  • Kein komplexer Timing-Code erforderlich

Mehr erfahren: Dokumentation der ezButton-Bibliothek

ESP32 C3 Super Mini Code zur Tasterentprellung für einen einzelnen Taster

Dieses Beispiel zeigt, wie Sie einen einzelnen Taster mit der ezButton-Bibliothek am ESP32 C3 Super Mini entprellen.

/* * 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-button-debounce */ #include <ezButton.h> #define DEBOUNCE_TIME 50 // the debounce time in millisecond, increase this time if it still chatters ezButton button(D7); // create ezButton object for pin GPIO7 void setup() { Serial.begin(115200); button.setDebounceTime(DEBOUNCE_TIME); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) Serial.println("The button is pressed"); if (button.isReleased()) Serial.println("The button is released"); }

ESP32 C3 Super Mini Code zur Tasterentprellung für mehrere Taster

Dieses Beispiel zeigt, wie Sie mit der ezButton-Bibliothek drei Taster gleichzeitig an Ihrem ESP32 C3 Super Mini entprellen.

Der Schaltplan

Schließen Sie drei Taster wie unten gezeigt an Ihren ESP32 C3 Super Mini an.

Schaltplan ESP32 C3 Super Mini Taster-Bibliothek

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

Taster ESP32 C3 Super Mini Pin
Taster 1 D5 und GND
Taster 2 D6 und GND
Taster 3 D7 und GND
/* * 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-button-debounce */ #include <ezButton.h> #define DEBOUNCE_TIME 50 // the debounce time in millisecond, increase this time if it still chatters ezButton button1(D5); // create ezButton object for pin D5 ezButton button2(D6); // create ezButton object for pin D6 ezButton button3(D7); // create ezButton object for pin D7 void setup() { Serial.begin(115200); button1.setDebounceTime(DEBOUNCE_TIME); // set debounce time to 50 milliseconds button2.setDebounceTime(DEBOUNCE_TIME); // set debounce time to 50 milliseconds button3.setDebounceTime(DEBOUNCE_TIME); // set debounce time to 50 milliseconds } void loop() { button1.loop(); // MUST call the loop() function first button2.loop(); // MUST call the loop() function first button3.loop(); // MUST call the loop() function first if (button1.isPressed()) Serial.println("The button 1 is pressed"); if (button1.isReleased()) Serial.println("The button 1 is released"); if (button2.isPressed()) Serial.println("The button 2 is pressed"); if (button2.isReleased()) Serial.println("The button 2 is released"); if (button3.isPressed()) Serial.println("The button 3 is pressed"); if (button3.isReleased()) Serial.println("The button 3 is released"); }

Ausgabe im Serial Monitor:

∞
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
The button 1 is pressed The button 2 is pressed The button 1 is released The button 3 is pressed The button 2 is released The button 3 is released
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

Anwendungsideen

Hier sind einige praktische Projekte, bei denen die Tasterentprellung für Ihren ESP32 C3 Super Mini unerlässlich ist:

  • Türschlosssysteme mit Tastenfeld-Eingabe
  • Gamecontroller mit reaktionsschneller Tastereingabe
  • Fernbedienungen für die Hausautomatisierung
  • Menünavigationssysteme mit mehreren Tastern
  • Zählerschaltungen, die eine genaue Erkennung von Tastendrücken benötigen
  • Tastenfelder für Alarmanlagen mit zuverlässiger Eingabe

Fordern Sie sich heraus

Probieren Sie diese Herausforderungen aus, um Ihre Kenntnisse zur Tasterentprellung am ESP32 C3 Super Mini zu verbessern:

  • Einfach: Ändern Sie die Entprellzeit auf verschiedene Werte und beobachten Sie, wie sich dies auf die Tasterreaktion auswirkt
  • Mittel: Fügen Sie eine LED hinzu, die mit jedem Tastendruck über den entprellten Eingang ein- und ausgeschaltet wird
  • Mittel: Erstellen Sie einen Zähler, der pro Tastendruck nur einmal hochzählt, und zeigen Sie den Zählerstand im Serial Monitor an
  • Fortgeschritten: Bauen Sie ein Menüsystem mit 4 Tastern und Entprellung, bei dem jeder Taster eine andere Aktion ausführt
  • Fortgeschritten: Implementieren Sie eine Erkennung für langes Drücken, die bei kurzem und langem Drücken unterschiedliche Aktionen auslöst

Zusätzliches Wissen

Wichtige Tipps zur Entprellung am ESP32 C3 Super Mini:

  • Der Wert DEBOUNCE_TIME hängt von Ihrer konkreten Taster-Hardware ab
  • Verschiedene Taster können unterschiedliche Entprellzeiten erfordern (typischerweise 20-100ms)
  • Beginnen Sie mit 50ms und passen Sie den Wert an, wenn Sie weiterhin Prellen sehen
  • Entprelltechniken funktionieren auch für Schalter, Endschalter, Reedschalter und Berührungssensoren
  • Hardware-Entprellung (mit Kondensatoren) kann die Software-Entprellung bei kritischen Anwendungen ergänzen

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