ESP32 C3 Super Mini - Taster - Langer Druck, kurzer Druck

Lernen Sie, wie Sie Ihren ESP32 C3 Super Mini so programmieren, dass er sowohl lange als auch kurze Tastendrücke erkennt. Dieses Tutorial behandelt alles von der grundlegenden Verdrahtung bis zu fortgeschrittenen Entprelltechniken für eine zuverlässige Erkennung von Tastereingaben.

In diesem Tutorial lernen Sie:

ESP32 C3 Super Mini - Taster - Langer Druck, kurzer Druck

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

Ein Drucktaster ist ein einfaches Eingabegerät, das beim Drücken einen Stromkreis schließt.

Wichtige Eigenschaften für ESP32 C3 Super Mini Projekte:

  • Zwei Zustände: gedrückt (LOW) und losgelassen (HIGH) bei Verwendung des internen Pull-ups
  • Kann mehrere Druckarten erkennen: kurzer Druck, langer Druck und Doppelklick
  • Erfordert Entprellung für eine zuverlässige Erkennung in realen Projekten
  • Funktioniert mit den internen Pull-up-Widerständen des ESP32 C3 Super Mini

Weitere Ressourcen zu Tastern:

Verdrahtungsdiagramm

Schließen Sie Ihren Taster gemäß dem folgenden Schaltplan an den ESP32 C3 Super Mini an.

Schaltplan ESP32 C3 Super Mini Taster

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

Wichtige Hinweise:

  • Dieses Tutorial verwendet den internen Pull-up-Widerstand
  • Der Tasterzustand ist HIGH, wenn er nicht gedrückt ist, und LOW, wenn er gedrückt ist
  • Kein externer Widerstand erforderlich

So erkennen Sie einen kurzen Druck

Um einen kurzen Druck am ESP32 C3 Super Mini zu erkennen, wird die Dauer zwischen dem Drücken und dem Loslassen des Tasters gemessen.

Methode zur Erkennung eines kurzen Drucks:

  • Messen Sie die Zeit zwischen dem Drück- und dem Loslass-Ereignis
  • Ist die Dauer kürzer als eine vordefinierte Zeit, wird ein kurzer Druck erkannt
  • Vergleichen Sie die Druckdauer mit Ihrem Schwellenwert SHORT_PRESS_TIME

Schritt-für-Schritt-Umsetzung:

  • Legen Sie fest, wie lange ein kurzer Druck maximal dauert
#define SHORT_PRESS_TIME 500 // 500 milliseconds
  • Erkennen Sie, dass der Taster gedrückt wird, und speichern Sie den Zeitpunkt des Drückens
if(prev_state == HIGH && button_state == LOW) pressed_time = millis();
  • Erkennen Sie, dass der Taster losgelassen wird, und speichern Sie den Zeitpunkt des Loslassens
if(prev_state == LOW && button_state == HIGH) released_time = millis();
  • Berechnen Sie die Druckdauer und
long press_duration = released_time - pressed_time;
  • Bestimmen Sie den kurzen Druck, indem Sie die Druckdauer mit der festgelegten Zeit für einen kurzen Druck vergleichen
if( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected");

ESP32 C3 Super Mini Code zur Erkennung eines kurzen Drucks

Dieser Code zeigt, wie Sie einen kurzen Tastendruck am ESP32 C3 Super Mini erkennen.

Was der Code macht:

  • Liest den Tasterzustand mit dem internen Pull-up-Widerstand aus
  • Berechnet die Zeitdauer zwischen Drücken und Loslassen
  • Erkennt einen kurzen Druck, wenn die Dauer unter 500ms liegt
  • Gibt das Erkennungsergebnis im Serial Monitor aus
/* * 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-long-press-short-press */ #define BUTTON_PIN 7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button #define SHORT_PRESS_TIME 500 // 500 milliseconds int prev_button_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin unsigned long pressed_time = 0; unsigned long released_time = 0; void setup() { Serial.begin(115200); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if (prev_button_state == HIGH && button_state == LOW) // button is pressed pressed_time = millis(); else if (prev_button_state == LOW && button_state == HIGH) { // button is released released_time = millis(); long press_duration = released_time - pressed_time; if ( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected"); } // save the the last state prev_button_state = button_state; }

Schnelle Schritte

  • Neu beim ESP32 C3 Mini? Absolvieren Sie zuerst unser Tutorial Erste Schritte mit dem ESP32 C3 Mini, um Ihre Entwicklungsumgebung einzurichten.
  • IDE einrichten: Wenn Sie den ESP32 C3 Super Mini zum ersten Mal verwenden, lesen Sie wie Sie die Umgebung für den ESP32 C3 Super Mini in der Arduino IDE einrichten
  • Code hochladen: Kopieren Sie den obigen Code und laden Sie ihn über die Arduino IDE auf Ihren ESP32 C3 Super Mini hoch
  • Hardware verdrahten: Schließen Sie den Taster gemäß dem Schaltplan an Ihren ESP32 C3 Super Mini an
  • Taster testen: Drücken Sie den Taster mehrmals kurz
  • Ergebnisse prüfen: Öffnen Sie den Serial Monitor (115200 Baud), um die Erkennungsergebnisse zu sehen
  • Profi-Tipp: Sie können den Wert SHORT_PRESS_TIME anpassen, um die Erkennung eines kurzen Drucks schneller oder langsamer 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
A short press is detected A short press is detected A short press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

※ Notiz:

Der Serial Monitor kann bei einem einzigen Druck mehrere kurze Drücke ausgeben. Dies ist ein normales Verhalten des Tasters. Dieses Verhalten wird "Prellphänomen" genannt. Wie Sie dieses Problem beseitigen, lernen Sie später in diesem Tutorial.

So erkennen Sie einen langen Druck

Es gibt zwei Methoden, um lange Tastendrücke am ESP32 C3 Super Mini zu erkennen.

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 noch gedrückt wird

Erste Methode (Erkennung beim Loslassen):

  • Messen Sie die Zeitdauer zwischen dem Drück- und dem Loslass-Ereignis
  • Ist die Dauer länger als eine vordefinierte Zeit, wird ein langer Druck erkannt

Zweite Methode (Erkennung während des Drückens):

  • Messen Sie die Druckzeit fortlaufend, während der Taster gehalten wird
  • Überschreitet die Dauer die vordefinierte Zeit, wird sofort ein langer Druck erkannt
  • Prüfen Sie weiter, bis der Taster losgelassen wird

ESP32 C3 Super Mini Code zur Erkennung eines langen Drucks beim Loslassen

Dieser ESP32 C3 Super Mini Code erkennt einen langen Druck, nachdem der Taster losgelassen wurde.

Was dieser Code macht:

  • Misst die gesamte Druckdauer vom Drücken bis zum Loslassen
  • Vergleicht die Dauer mit LONG_PRESS_TIME (1000ms)
  • Erkennt einen langen Druck erst nach dem Loslassen des Tasters
  • Nützlich, wenn Sie die volle Druckdauer bestätigen müssen
/* * 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-long-press-short-press */ #define BUTTON_PIN 7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button #define LONG_PRESS_TIME 1000 // 1000 milliseconds int prev_button_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin unsigned long pressed_time = 0; unsigned long released_time = 0; void setup() { Serial.begin(115200); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if(prev_button_state == HIGH && button_state == LOW) // button is pressed pressed_time = millis(); else if(prev_button_state == LOW && button_state == HIGH) { // button is released released_time = millis(); long press_duration = released_time - pressed_time; if( press_duration > LONG_PRESS_TIME ) Serial.println("A long press is detected"); } // save the the last state prev_button_state = button_state; }

Schnelle Schritte

  • Neu beim ESP32 C3 Mini? Absolvieren Sie zuerst unser Tutorial Erste Schritte mit dem ESP32 C3 Mini, um Ihre Entwicklungsumgebung einzurichten.
  • IDE einrichten: Wenn Sie den ESP32 C3 Super Mini zum ersten Mal verwenden, lesen Sie wie Sie die Umgebung für den ESP32 C3 Super Mini in der Arduino IDE einrichten
  • Code hochladen: Kopieren Sie den obigen Code und laden Sie ihn über die Arduino IDE auf den ESP32 C3 Super Mini hoch
  • Langen Druck testen: Drücken und halten Sie den Taster länger als eine Sekunde und lassen Sie ihn dann los
  • Serial Monitor prüfen: Öffnen Sie den Serial 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
∞
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
A long press is detected A long press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

ESP32 C3 Super Mini Code zur Erkennung eines langen Drucks während des Drückens

Dieser Code erkennt einen langen Druck sofort, während der Taster noch gedrückt gehalten wird.

Was dieser Code macht:

  • Prüft die Druckdauer fortlaufend, während der Taster gehalten wird
  • Erkennt einen langen Druck sofort, wenn die Dauer den Schwellenwert überschreitet
  • Löst die Aktion sofort aus, ohne auf das Loslassen zu warten
  • Ideal für Anwendungen, die eine Reaktion in Echtzeit erfordern
/* * 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-long-press-short-press */ #define BUTTON_PIN 7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button #define LONG_PRESS_TIME 1000 // 1000 milliseconds int prev_button_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin unsigned long pressed_time = 0; bool is_pressing = false; bool is_long_detected = false; void setup() { Serial.begin(115200); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if(prev_button_state == HIGH && button_state == LOW) { // button is pressed pressed_time = millis(); is_pressing = true; is_long_detected = false; } else if(prev_button_state == LOW && button_state == HIGH) { // button is released is_pressing = false; } if(is_pressing == true && is_long_detected == false) { long press_duration = millis() - pressed_time; if( press_duration > LONG_PRESS_TIME ) { Serial.println("A long press is detected"); is_long_detected = true; } } // save the the last state prev_button_state = button_state; }

Schnelle Schritte

  • Neu beim ESP32 C3 Mini? Absolvieren Sie zuerst unser Tutorial Erste Schritte mit dem ESP32 C3 Mini, um Ihre Entwicklungsumgebung einzurichten.
  • IDE einrichten: Wenn Sie den ESP32 C3 Super Mini zum ersten Mal verwenden, lesen Sie wie Sie die Umgebung für den ESP32 C3 Super Mini in der Arduino IDE einrichten
  • Code hochladen: Laden Sie den obigen Code über die Arduino IDE auf Ihren ESP32 C3 Super Mini hoch
  • Während des Drückens testen: Drücken und halten Sie den Taster mehrere Sekunden lang (nicht sofort loslassen)
  • Zeitverhalten beobachten: Die Erkennung erfolgt, während Sie noch drücken
  • Profi-Tipp: Diese Methode liefert sofortige Rückmeldung und eignet sich besser für zeitkritische Anwendungen wie das Zurücksetzen auf Werkseinstellungen
∞
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
A long press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

So erkennen Sie sowohl einen langen als auch einen kurzen Druck

Kombinieren Sie beide Druckarten, um einem einzigen Taster an Ihrem ESP32 C3 Super Mini mehrere Funktionen zuzuweisen.

Kurzer und langer Druck nach dem Loslassen

Dieser ESP32 C3 Super Mini Code erkennt beide Druckarten nach dem Loslassen des Tasters.

Was dieser Code macht:

  • Unterscheidet anhand der Dauer zwischen kurzem und langem Druck
  • Trifft die Entscheidung nach dem Loslassen des Tasters
  • Verwendet einen einzigen Schwellenwert (LONG_PRESS_TIME) zur Unterscheidung
  • Ermöglicht zwei verschiedene Aktionen mit einem Taster
/* * 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-long-press-short-press */ #define BUTTON_PIN 7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button #define SHORT_PRESS_TIME 1000 // 1000 milliseconds #define LONG_PRESS_TIME 1000 // 1000 milliseconds int prev_button_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin unsigned long pressed_time = 0; unsigned long released_time = 0; void setup() { Serial.begin(115200); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if (prev_button_state == HIGH && button_state == LOW) // button is pressed pressed_time = millis(); else if (prev_button_state == LOW && button_state == HIGH) { // button is released released_time = millis(); long press_duration = released_time - pressed_time; if ( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected"); if ( press_duration > LONG_PRESS_TIME ) Serial.println("A long press is detected"); } // save the the last state prev_button_state = button_state; }

Schnelle Schritte

  • Neu beim ESP32 C3 Mini? Absolvieren Sie zuerst unser Tutorial Erste Schritte mit dem ESP32 C3 Mini, um Ihre Entwicklungsumgebung einzurichten.
  • IDE einrichten: Wenn Sie den ESP32 C3 Super Mini zum ersten Mal verwenden, lesen Sie wie Sie die Umgebung für den ESP32 C3 Super Mini in der Arduino IDE einrichten
  • Code hochladen: Laden Sie den obigen Code über die Arduino IDE auf den ESP32 C3 Super Mini hoch
  • Beide Arten testen: Probieren Sie sowohl einen langen Druck (>1 Sekunde halten) als auch einen kurzen Druck (kurzes Antippen) aus
  • Serial Monitor prüfen: Öffnen Sie den Serial Monitor, um zu sehen, welche Druckart erkannt wird
  • Profi-Tipp: Stellen Sie LONG_PRESS_TIME so ein, dass es dem erwarteten Verhalten Ihrer Benutzer entspricht (typischerweise funktionieren 500-1500ms gut)
∞
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
A short press is detected A long press is detected A short press is detected A short press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

※ Notiz:

Der Serial Monitor kann bei einem langen Druck mehrere erkannte kurze Drücke anzeigen. Dies ist das normale Verhalten des Tasters. Dieses Verhalten wird "Prellphänomen" genannt. Das Problem wird im letzten Teil dieses Tutorials gelöst.

Kurzer und langer Druck während des Drückens

Dieser Code erkennt einen langen Druck sofort und ermöglicht dennoch die Erkennung eines kurzen Drucks.

Was dieser Code macht:

  • Erkennt einen langen Druck sofort, wenn der Schwellenwert erreicht ist
  • Erkennt nach dem Loslassen weiterhin einen kurzen Druck, wenn kein langer Druck ausgelöst wurde
  • Liefert sofortige Rückmeldung für Aktionen bei langem Druck
  • Am besten für Anwendungen, die eine sofortige Reaktion benötigen
/* * 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-long-press-short-press */ #define BUTTON_PIN 7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button #define SHORT_PRESS_TIME 1000 // 1000 milliseconds #define LONG_PRESS_TIME 1000 // 1000 milliseconds int prev_button_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin unsigned long pressed_time = 0; unsigned long released_time = 0; bool is_pressing = false; bool is_long_detected = false; void setup() { Serial.begin(115200); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if (prev_button_state == HIGH && button_state == LOW) { // button is pressed pressed_time = millis(); is_pressing = true; is_long_detected = false; } else if (prev_button_state == LOW && button_state == HIGH) { // button is released is_pressing = false; released_time = millis(); long press_duration = released_time - pressed_time; if ( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected"); } if (is_pressing == true && is_long_detected == false) { long press_duration = millis() - pressed_time; if ( press_duration > LONG_PRESS_TIME ) { Serial.println("A long press is detected"); is_long_detected = true; } } // save the the last state prev_button_state = button_state; }

Schnelle Schritte

  • Neu beim ESP32 C3 Mini? Absolvieren Sie zuerst unser Tutorial Erste Schritte mit dem ESP32 C3 Mini, um Ihre Entwicklungsumgebung einzurichten.
  • IDE einrichten: Wenn Sie den ESP32 C3 Super Mini zum ersten Mal verwenden, lesen Sie wie Sie die Umgebung für den ESP32 C3 Super Mini in der Arduino IDE einrichten
  • Code hochladen: Laden Sie den Code über die Arduino IDE auf Ihren ESP32 C3 Super Mini hoch
  • Zeitverhalten testen: Probieren Sie kurzes Antippen und langes Halten aus, um die unterschiedlichen Verhaltensweisen zu sehen
  • Reaktion beobachten: Der lange Druck wird sofort ausgelöst, nicht erst beim Loslassen
  • Profi-Tipp: Diese Methode verhindert versehentliches Auslösen eines langen Drucks, da Benutzer sofort eine Rückmeldung erhalten
∞
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
A short press is detected A long press is detected A short press is detected A long press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

Langer und kurzer Druck mit Entprellung

Die Entprellung beseitigt falsche Tasterablesungen, die durch mechanische Schwingungen in Drucktastern entstehen.

Warum Entprellung wichtig ist:

  • Physische Taster erzeugen beim Drücken elektrisches Rauschen (Prellen)
  • Ohne Entprellung kann ein Druck als mehrere Drücke registriert werden
  • Entscheidend für eine zuverlässige Tastererkennung in ESP32 C3 Super Mini Projekten
  • Unverzichtbar für Anwendungen, die präzise Eingaben erfordern

Verwendung der ezButton-Bibliothek:

  • Vereinfacht die Umsetzung der Entprellung für Einsteiger
  • Übernimmt komplexe Timing-Logik automatisch
  • Funktioniert zuverlässig mit mehreren Tastern
  • Kostenlos und einfach in der Arduino IDE zu installieren

Kurzer und langer Druck mit Entprellung nach dem Loslassen

Dieser ESP32 C3 Super Mini Code verwendet die ezButton-Bibliothek für eine saubere, zuverlässige Tastererkennung.

Was dieser Code macht:

  • Implementiert die Entprellung mit der ezButton-Bibliothek
  • Beseitigt Fehlerkennungen durch Tasterprellen
  • Erkennt beide Druckarten nach dem Loslassen zuverlässig
  • Bietet eine praxistaugliche Tasterverarbeitung
/* * 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-long-press-short-press */ #include <ezButton.h> #define SHORT_PRESS_TIME 1000 // 1000 milliseconds #define LONG_PRESS_TIME 1000 // 1000 milliseconds ezButton button(D7); // create ezButton object for pin Arduino Nano ESP32 pin GPIO7 unsigned long pressed_time = 0; unsigned long released_time = 0; void setup() { Serial.begin(115200); button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) pressed_time = millis(); if (button.isReleased()) { released_time = millis(); long press_duration = released_time - pressed_time; if ( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected"); if ( press_duration > LONG_PRESS_TIME ) Serial.println("A long press is detected"); } }

Schnelle Schritte

  • Neu beim ESP32 C3 Mini? Absolvieren Sie zuerst unser Tutorial Erste Schritte mit dem ESP32 C3 Mini, um Ihre Entwicklungsumgebung einzurichten.
  • IDE einrichten: Wenn Sie den ESP32 C3 Super Mini zum ersten Mal verwenden, lesen Sie wie Sie die Umgebung für den ESP32 C3 Super Mini in der Arduino IDE einrichten
  • Bibliothek installieren: Installieren Sie die ezButton-Bibliothek - siehe How To
  • Code hochladen: Laden Sie den obigen Code über die Arduino IDE auf den ESP32 C3 Super Mini hoch
  • Saubere Erkennung testen: Probieren Sie lange und kurze Drücke aus - keine doppelten Erkennungen mehr
  • Ergebnisse prüfen: Öffnen Sie den Serial Monitor, um eine saubere, genaue Erkennung der Tastendrücke zu sehen
  • Profi-Tipp: Die ezButton-Bibliothek beseitigt alle Prellprobleme automatisch - verwenden Sie sie für alle produktiven Projekte
∞
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
A short press is detected A long press is detected A short press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

Kurzer und langer Druck mit Entprellung während des Drückens

Dieser Code kombiniert die sofortige Erkennung eines langen Drucks mit Entprellung für die beste Benutzererfahrung.

Was dieser Code macht:

  • Erkennt einen langen Druck sofort mit Entprellung
  • Verhindert Fehlauslösungen durch Tasterprellen
  • Liefert sofortige Rückmeldung bei langem Druck
  • Verarbeitet einen kurzen Druck sauber nach dem Loslassen
/* * 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-long-press-short-press */ #include <ezButton.h> #define SHORT_PRESS_TIME 1000 // 1000 milliseconds #define LONG_PRESS_TIME 1000 // 1000 milliseconds ezButton button(D7); // create ezButton object for pin Arduino Nano ESP32 pin GPIO7 unsigned long pressed_time = 0; unsigned long released_time = 0; bool is_pressing = false; bool is_long_detected = false; void setup() { Serial.begin(115200); button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) { pressed_time = millis(); is_pressing = true; is_long_detected = false; } if (button.isReleased()) { is_pressing = false; released_time = millis(); long press_duration = released_time - pressed_time; if ( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected"); } if (is_pressing == true && is_long_detected == false) { long press_duration = millis() - pressed_time; if ( press_duration > LONG_PRESS_TIME ) { Serial.println("A long press is detected"); is_long_detected = true; } } }

Schnelle Schritte

  • Neu beim ESP32 C3 Mini? Absolvieren Sie zuerst unser Tutorial Erste Schritte mit dem ESP32 C3 Mini, um Ihre Entwicklungsumgebung einzurichten.
  • IDE einrichten: Wenn Sie den ESP32 C3 Super Mini zum ersten Mal verwenden, lesen Sie wie Sie die Umgebung für den ESP32 C3 Super Mini in der Arduino IDE einrichten
  • Bibliothek installieren: Installieren Sie die ezButton-Bibliothek - siehe How To
  • Code hochladen: Laden Sie den Code über die Arduino IDE auf Ihren ESP32 C3 Super Mini hoch
  • Zuverlässigkeit testen: Drücken Sie den Taster mehrmals - es gibt keine doppelten Ablesungen
  • Methoden vergleichen: Dies ist die zuverlässigste Methode für produktive ESP32 C3 Super Mini Projekte
  • Profi-Tipp: Verwenden Sie diese Methode für kritische Anwendungen wie Geräte-Resets oder wichtige Steuerungen, bei denen Genauigkeit unerlässlich ist
∞
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
A short press is detected A long press is detected A short press is detected A long press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

Warum langer und kurzer Druck benötigt werden

Wenn Sie verstehen, wann Sie die Erkennung eines langen bzw. kurzen Drucks einsetzen, verbessern Sie Ihre ESP32 C3 Super Mini Projekte.

Praktische Vorteile:

  • Pins sparen: Ein einziger Taster kann zwei oder mehr Funktionen steuern (kurzer Druck für Licht, langer Druck für Lüfter)
  • Unfälle vermeiden: Verwenden Sie einen langen Druck für kritische Funktionen wie das Zurücksetzen auf Werkseinstellungen, um versehentliches Auslösen zu vermeiden
  • Bessere Bedienung: Benutzer können mehrere Aktionen ohne zusätzliche Hardware ausführen
  • Kosteneinsparungen: Weniger Taster bedeuten einfachere Schaltungen und geringere Bauteilkosten
  • Platzsparend: Ideal für kompakte ESP32 C3 Super Mini Projekte mit begrenztem Platz
  • Professionelles Design: Multifunktionstaster sind in der Unterhaltungselektronik Standard

Häufige Anwendungen:

  • Kurzer Druck: LED umschalten, Zähler erhöhen, Menüpunkt auswählen
  • Langer Druck: Werkseinstellungen wiederherstellen, ausschalten, Einrichtungsmodus aufrufen, Speicher löschen

Fordern Sie sich heraus

Bringen Sie Ihre ESP32 C3 Super Mini Taster-Kenntnisse mit diesen praktischen Herausforderungen auf die nächste Stufe.

  • Einfach: Ändern Sie den Code so, dass andere Zeitschwellen verwendet werden (z. B. 300ms für kurz, 2000ms für lang)
  • Einfach: Fügen Sie eine dritte Druckart hinzu - einen sehr kurzen Druck (unter 200ms) für schnelle Aktionen
  • Mittel: Steuern Sie zwei LEDs mit einem Taster - ein kurzer Druck schaltet die rote LED um, ein langer Druck die grüne LED
  • Mittel: Implementieren Sie zusätzlich zum kurzen und langen Druck eine Doppelklick-Erkennung
  • Fortgeschritten: Erstellen Sie einen Erkenner für Tastersequenzen, der Muster (kurz-lang-kurz) erkennt
  • Fortgeschritten: Bauen Sie ein ESP32 C3 Super Mini Gerät mit mehreren Modi, bei dem ein langer Druck durch die Modi schaltet und ein kurzer Druck den aktuellen Modus aktiviert

Anwendungsideen

Hier sind praktische Projektideen, die die Erkennung von langen und kurzen Tastendrücken mit dem ESP32 C3 Super Mini nutzen.

  • Intelligente Lichtsteuerung für das Zuhause - kurzer Druck für Ein/Aus, langer Druck für den Dimmmodus
  • ESP32 C3 Super Mini 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 stellt die Temperatur ein, langer Druck wechselt zwischen Heiz- und Kühlmodus
  • IoT-Türschloss - kurzer Druck zum vorübergehenden Entriegeln, langer Druck zum dauerhaften Entriegeln
  • Batteriebetriebener Sensor - kurzer Druck zur Statusprüfung, langer Druck zum Wechsel in den Tiefschlafmodus

Video-Bereich

Sehen Sie sich das folgende Video an, um eine visuelle Anleitung zu diesem ESP32 C3 Super Mini Projekt mit langem und kurzem Tastendruck zu erhalten.

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