Arduino Nano - Knop - LED

Deze tutorial legt uit hoe u een Arduino Nano en een knop gebruikt om een LED te besturen. We behandelen twee verschillende toepassingen:

Toepassing 1 - De LED-status is gesynchroniseerd met de status van de knop. In detail:

Toepassing 2 - De LED-status wordt telkens omgeschakeld wanneer de knop wordt ingedrukt. Meer specifiek:

Bij Toepassing 2 moeten we de knop ontprellen (debounce) om ervoor te zorgen dat deze correct functioneert. We ontdekken waarom dit belangrijk is door te vergelijken hoe de LED reageert met en zonder de knop te ontprellen in de Arduino-code.

Over LED en Knop

Als u nog niet vertrouwd bent met LED en knop (inclusief pinout, werking en programmeren), kunnen de volgende tutorials u helpen:

Bedradingsschema

Arduino Nano Knop LED bedrading schema

This image is created using Fritzing. Click to enlarge image

Toepassing 1 - De LED-status is gesynchroniseerd met de knopstatus

Arduino Nano Code

/* * 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-button-led */ const int BUTTON_PIN = 2; // The number of the pushbutton pin const int LED_PIN = 5; // The number of the LED pin int button_state = 0; // variable for reading the pushbutton status void setup() { // Configure the LED pin as a digital output pinMode(LED_PIN, OUTPUT); // initialize the pushbutton pin as an pull-up input: // The pull-up input pin is HIGH when the button is open and LOW when pressed. pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the pushbutton value: button_state = digitalRead(BUTTON_PIN); // control LED according to the state of button if(button_state == LOW) // If button is pressing digitalWrite(LED_PIN, HIGH); // turn on LED else // otherwise, button is not pressing digitalWrite(LED_PIN, LOW); // turn off LED }

Snelle Stappen

  • Verbind de Arduino Nano met uw computer via een USB-kabel.
  • Start de Arduino IDE en selecteer het juiste board en de juiste poort.
  • Kopieer de code en open deze in de Arduino IDE.
  • Klik op de Upload-knop in de Arduino IDE om de code te compileren en uploaden naar de Arduino Nano.
Arduino IDE Code Uploaden
  • Druk de knop in en houd deze enkele seconden ingedrukt.
  • Bekijk de verandering in de status van de LED.

U zult zien dat de LED-status precies overeenkomt met de knopstatus.

Code Uitleg

Bekijk de regel-voor-regel uitleg in de commentaarregels van de broncode!

Toepassing 2 - Knop schakelt LED

Arduino Nano Code - Knop schakelt LED zonder ontprellen

/* * 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-button-led */ const int BUTTON_PIN = 2; // The Arduino Nano pin connected to button's pin const int LED_PIN = 5; // The Arduino Nano pin connected to LED's pin int led_state = LOW; // The current state of LED int prev_button_state; // The previous state of button int button_state; // The current state of button void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode pinMode(LED_PIN, OUTPUT); // set arduino pin to output mode button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if(prev_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); // toggle state of LED led_state = !led_state; // control LED according to the toggled state digitalWrite(LED_PIN, led_state); } }

Code Uitleg

De uitleg vindt u in de commentaarregels in de bovenstaande Arduino Nano-code.

In de code is de uitdrukking led_state = !led_state gelijk aan de volgende code:

if(led_state == LOW) led_state = HIGH; else led_state = LOW;

Snelle Stappen

  • Kopieer de code en open deze in de Arduino IDE.
  • Upload de code naar de Arduino Nano.
  • Druk meerdere keren op de knop en laat deze los.
  • Observeer de verandering in de LED-status.

U zult merken dat de LED-status wordt omgeschakeld telkens wanneer de knop wordt ingedrukt. Dit gedrag is echter niet altijd consistent. Soms kan de LED-status meerdere keren snel achter elkaar schakelen binnen één drukbeurt, of juist helemaal niet schakelen (dubbel schakelen in snelle opvolging, wat met het blote oog moeilijk te zien is).

⇒ Om dit probleem op te lossen, moeten we de knop ontprellen.

Arduino Nano Code - Knop schakelt LED met ontprellen

Het ontprellen van een knop kan lastig zijn voor beginners. Gelukkig maakt de ezButton bibliotheek dit eenvoudig.

Waarom is ontprellen noodzakelijk? Zie de Arduino Nano - Knop ontprellen tutorial voor meer informatie.

/* * 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-button-led */ #include <ezButton.h> const int BUTTON_PIN = 2; // The number of the pushbutton pin const int LED_PIN = 5; // The number of the LED pin ezButton button(BUTTON_PIN); // create ezButton object for pin 7; int led_state = LOW; // The current state of LED void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(LED_PIN, OUTPUT); // set arduino pin to output mode button.setDebounceTime(50); // 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"); // toggle state of LED led_state = !led_state; // control LED according to the toggleed sate digitalWrite(LED_PIN, led_state); } }

Snelle Stappen

  • Installeer de ezButton bibliotheek. Raadpleeg Hoe te doen voor instructies.
  • Kopieer de code en open deze in de Arduino IDE.
  • Klik op de Upload-knop in de Arduino IDE om de code naar de Arduino Nano te uploaden.
  • Druk meerdere keren op de knop en laat deze los.
  • Bekijk hoe de LED-status verandert.

U zult zien dat de LED-status precies één keer wordt omgeschakeld per keer dat de knop wordt ingedrukt.

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.

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