ESP32 - Meerdere Knoppen

Deze handleiding begeleidt u bij het programmeren van een ESP32 om meerdere knoppen tegelijk te gebruiken zonder afhankelijk te zijn van de functie delay(). De tutorial biedt code in twee methoden aan:

We demonstreren met vier knoppen. U kunt de code echter eenvoudig aanpassen voor twee knoppen, drie knoppen, vijf knoppen of zelfs meer.

Hardware Benodigd

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB-kabel Type-C
1×Breadboard-monteerbare knop met kap
1×Breadboard-monteerbare knopenset
1×Paneel-monteerbare ronde knop
1×Drukknopmodule
1×Breadboard (experimenteerprint)
1×Jumperdraden
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over de Knop

We hebben specifieke tutorials over knoppen. Elke tutorial bevat gedetailleerde informatie en stapsgewijze instructies over hardware pinout, het werkingsprincipe, aansluitingen op de ESP32 en ESP32-code... Meer hierover leert u via de onderstaande links:

Bedradingsschema

ESP32 meerdere knoppen bedradingsschema

This image is created using Fritzing. Click to enlarge image

ESP32 Code - Meerdere Knoppen met debounce

Bij het werken met meerdere knoppen kunnen er complicaties ontstaan in bepaalde situaties:

Gelukkig vereenvoudigt de ezButton bibliotheek dit proces door debouncing en knopgebeurtenissen intern af te handelen. Dit bespaart gebruikers het beheer van tijdstempels en variabelen bij gebruik van de bibliotheek. Bovendien kan het gebruik van een array van knoppen de code overzichtelijker en korter maken.

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-multiple-button */ #include <ezButton.h> #define BUTTON_PIN_1 25 // The ESP32 pin GPIO25 connected to the button 1 #define BUTTON_PIN_2 26 // The ESP32 pin GPIO26 connected to the button 2 #define BUTTON_PIN_3 27 // The ESP32 pin GPIO27 connected to the button 3 #define BUTTON_PIN_4 14 // The ESP32 pin GPIO14 connected to the button 4 ezButton button1(BUTTON_PIN_1); // create ezButton object for button 1 ezButton button2(BUTTON_PIN_2); // create ezButton object for button 2 ezButton button3(BUTTON_PIN_3); // create ezButton object for button 3 ezButton button4(BUTTON_PIN_4); // create ezButton object for button 4 void setup() { Serial.begin(9600); button1.setDebounceTime(100); // set debounce time to 100 milliseconds button2.setDebounceTime(100); // set debounce time to 100 milliseconds button3.setDebounceTime(100); // set debounce time to 100 milliseconds button4.setDebounceTime(100); // set debounce time to 100 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 button4.loop(); // MUST call the loop() function first // get button state after debounce int button1_state = button1.getState(); // the state after debounce int button2_state = button2.getState(); // the state after debounce int button3_state = button3.getState(); // the state after debounce int button4_state = button4.getState(); // the state after debounce /* Serial.print("The button 1 state: "); Serial.println(button1_state); Serial.print("The button 2 state: "); Serial.println(button2_state); Serial.print("The button 3 state: "); Serial.println(button3_state); Serial.print("The button 4 state: "); Serial.println(button4_state); */ 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"); if (button4.isPressed()) Serial.println("The button 4 is pressed"); if (button4.isReleased()) Serial.println("The button 4 is released"); }

Snelle Stappen

  • Als u voor het eerst een ESP32 gebruikt, bekijk dan hoe u de omgeving voor ESP32 instelt in Arduino IDE.
  • Maak de bedrading zoals weergegeven in bovenstaande afbeelding.
  • Verbind de ESP32 met uw pc via een micro-USB-kabel.
  • Open de Arduino IDE op uw pc.
  • Selecteer het juiste ESP32 board (bijvoorbeeld ESP32 Dev Module) en COM-poort.
  • Klik op het Bibliotheken icoon in de linkerzijbalk van de Arduino IDE.
  • Zoek op “ezButton”, en zoek de buttonbibliotheek van ArduinoGetStarted.
  • Klik op de Installeren-knop om de ezButton-bibliotheek te installeren.
ESP32 knop bibliotheek
  • Kopieer bovenstaande code en plak deze in de Arduino IDE.
  • Compileer en upload de code naar het ESP32-board door op de Upload-knop te klikken in de Arduino IDE.
Hoe code uploaden naar ESP32 in Arduino IDE
  • Open de Seriële Monitor in Arduino IDE.
  • Druk één voor één op en laat de knoppen los.
COM6
Send
The button 1 is pressed The button 1 is released The button 2 is pressed The button 2 is released The button 3 is pressed The button 3 is released The button 4 is pressed The button 4 is released
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

ESP32 Code - Meerdere Knoppen met gebruik van array

We kunnen de bovenstaande code verder verbeteren door gebruik te maken van een array van knoppen. De volgende code laat zien hoe deze array knopobjecten beheert.

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-multiple-button */ #include <ezButton.h> #define BUTTON_NUM 4 // the number of buttons #define BUTTON_PIN_1 25 // The ESP32 pin GPIO25 connected to the button 1 #define BUTTON_PIN_2 26 // The ESP32 pin GPIO26 connected to the button 2 #define BUTTON_PIN_3 27 // The ESP32 pin GPIO27 connected to the button 3 #define BUTTON_PIN_4 14 // The ESP32 pin GPIO14 connected to the button 4 ezButton buttonArray[] = { ezButton(BUTTON_PIN_1), ezButton(BUTTON_PIN_2), ezButton(BUTTON_PIN_3), ezButton(BUTTON_PIN_4) }; void setup() { Serial.begin(9600); for (byte i = 0; i < BUTTON_NUM; i++) { buttonArray[i].setDebounceTime(100); // set debounce time to 100 milliseconds } } void loop() { for (byte i = 0; i < BUTTON_NUM; i++) buttonArray[i].loop(); // MUST call the loop() function first for (byte i = 0; i < BUTTON_NUM; i++) { // get button state after debounce int button_state = buttonArray[i].getState(); // the state after debounce /* Serial.print("The button "); Serial.print(i + 1); Serial.print(": "); Serial.println(button_state); */ if (buttonArray[i].isPressed()) { Serial.print("The button "); Serial.print(i + 1); Serial.println(" is pressed"); } if (buttonArray[i].isReleased()) { Serial.print("The button "); Serial.print(i + 1); Serial.println(" is released"); } } }

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u stap-voor-stap het project te begrijpen.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!