Arduino Nano - Meerdere Knoppen

Deze handleiding legt uit hoe u een Arduino Nano programmeert zodat deze meerdere knoppen tegelijk kan afhandelen zonder te vertrouwen op de delay() functie. De handleiding biedt code op twee verschillende manieren aan:

We gebruiken vier knoppen als voorbeeld. U kunt dit eenvoudig aanpassen voor twee knoppen, drie knoppen, vijf knoppen of zelfs meer.

Over Knop

Als u niet vertrouwd bent met de knop (pinout, werking, programmeren…), kunnen de volgende tutorials u meer informatie bieden:

Schema Aansluiting

Arduino Nano meerdere knoppen Schema Aansluiting

This image is created using Fritzing. Click to enlarge image

Arduino Nano Code - Meerdere Knoppen met debounce

Bij het gebruik van meerdere knoppen kan het in bepaalde situaties ingewikkeld worden:

Gelukkig vereenvoudigt de ezButton bibliotheek dit proces door intern debounce en knopgebeurtenissen te beheren. Dit ontlast gebruikers van het bijhouden van tijdstempels en variabelen bij het gebruik van de bibliotheek. Bovendien kan het gebruik van een array van knoppen de code duidelijker en korter maken.

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-multiple-button */ #include <ezButton.h> #define BUTTON_PIN_1 4 // The Arduino Nano pin connected to the button 1 #define BUTTON_PIN_2 5 // The Arduino Nano pin connected to the button 2 #define BUTTON_PIN_3 6 // The Arduino Nano pin connected to the button 3 #define BUTTON_PIN_4 7 // The Arduino Nano pin 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

  • Maak de bedrading volgens de bovenstaande afbeelding.
  • Verbind de Arduino Nano met uw PC via een USB-kabel.
  • Open de Arduino IDE op uw PC.
  • Selecteer het juiste Arduino Nano board (bijv. Arduino Nano Uno) en de juiste COM-poort.
  • Klik op het Libraries-icoon in de linkerzijbalk van de Arduino IDE.
  • Zoek op “ezButton” en vind de knopbibliotheek van ArduinoGetStarted.
  • Klik op de Installeren-knop om de ezButton bibliotheek te installeren.
Arduino Nano knopbibliotheek
  • Kopieer de bovenstaande code en plak deze in de Arduino IDE.
  • Compileer en upload de code naar het Arduino Nano board door op de Upload-knop te klikken in de Arduino IDE.
Hoe Arduino Nano code te uploaden in Arduino IDE
  • Open de Serial Monitor in Arduino IDE.
  • Druk de knoppen één voor één in en laat ze weer 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  

Arduino Nano Code - Meerdere Knoppen met gebruik van array

We kunnen de bovenstaande code verbeteren door gebruik te maken van een array van knoppen. De volgende code gebruikt deze array om knopobjecten te beheren.

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-multiple-button */ #include <ezButton.h> #define BUTTON_NUM 4 // the number of buttons #define BUTTON_PIN_1 4 // The Arduino Nano pin connected to the button 1 #define BUTTON_PIN_2 5 // The Arduino Nano pin connected to the button 2 #define BUTTON_PIN_3 6 // The Arduino Nano pin connected to the button 3 #define BUTTON_PIN_4 7 // The Arduino Nano pin 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 om de stappen makkelijker te volgen.

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