Button2: Vereenvoudiging van de knopbediening op Arduino- en ESP-borden
Wat is de Button2-bibliotheek?
Belangrijkste Kenmerken van de Button2 Bibliotheek
-
Ondersteunt meerdere knop gebeurtenissen: detecteert enkele klikken, dubbele klikken, drievoudige klikken, lang indrukken en meer.
-
Gebeurtenisgestuurde acties: handel knopgebeurtenissen af met callbacks, waardoor de leesbaarheid en efficiëntie van de code worden verbeterd.
-
Debounce-mechanisme: Ingebouwde debounce-verwerking zorgt voor betrouwbare invoerdetectie en voorkomt valse triggers.
-
Ondersteuning voor meerdere knoppen: Beheer meerdere knoppen zonder complexe codering, ideaal voor multifunctionele interfaces.
-
ESP32 en Arduino Compatibiliteit: Werkt naadloos met Arduino IDE en ondersteunt beide >ESP8266 en ESP32 borden.
Waarom gebruiken Knop2 voor Uw Project?
Gebruikershandleiding
1. Importeer de bibliotheek
// Initialize M5StickC Plus2 #include "Button2.h"
Button2
om een knopobject te maken en geef de knoppin door als argument:// Initialize M5StickC Plus2 #define BUTTON_PIN D3 Button2 button; void setup() { button.begin(BUTTON_PIN); }
3. Stel Callback-functies in
setXXXHandler()
methoden om terugbelfuncties toe te wijzen voor verschillende knopacties:-
setTapHandler()
: triggers voor elke knoptap; dient als de basis callback-functie. -
setClickHandler()
: wordt geactiveerd na één klik. -
setChangedHandler()
,setPressedHandler()
,setReleasedHandler()
: Detecteert veranderingen in de knopstatus. -
setLongClickDetectedHandler()
: wordt geactiveerd wanneer de knop gedurende een bepaalde tijd wordt ingedrukt. -
setLongClickHandler()
: Wordt geactiveerd nadat de knop wordt losgelaten na lang indrukken. -
setDoubleClickHandler()
,setTripleClickHandler()
: detecteert dubbele en drievoudige klikken.// Initialize M5StickC Plus2 void handleTap(Button2& b) { // Handle Button Click Events } void setup() { // ... button.setTapHandler(handleTap); }
✔ Gekopieerd!
4. Bel de lus()
Functie
loop()
functie de loop()
functie van het button-object aan:// Initialize M5StickC Plus2 void loop() { button.loop(); }
5. Uitgebreide functies
-
Aanpasbare parameters zoals lange drukduur en dubbelkliktiming.
-
Het gebruik van een timer onderbreekt het aanroepen van de functie
loop()
, waardoor het blokkeren van de hoofdlus wordt voorkomen. -
Aangepaste functies voor detectie van de knopstatus die verschillende soorten knoppen ondersteunen, zoals capacitieve aanraakknoppen en op I2C gebaseerde knoppen.
Voorbeeldcode
// Initialize M5StickC Plus2 #include Button2 button(2); // Create a button object on GPIO pin 2 void setup() { Serial.begin(9600); // Initialize serial communication // Handle single click button.setClickHandler([](Button2 &btn) { Serial.println("Single click detected!"); }); // Handle long press after release button.setLongClickHandler([](Button2 &btn) { Serial.println("Long press completed!"); }); } void loop() { button.loop(); // Continuously check for button events }
Conclusie: Vereenvoudig het knopbeheer met Button2