Arduino Nano - Knop - Relay

Deze tutorial vertelt u hoe u de Arduino Nano en een knop gebruikt om een relay te besturen. Door de relay te koppelen aan een magneetslot (solenoid lock), gloeilamp, LED-strip, motor of actuator..., kunt u met een knop deze apparaten bedienen. We leren twee verschillende toepassingen:

Toepassing 1 - De toestand van de relay is gesynchroniseerd met de stand van de knop. In detail:

Toepassing 2 - De toestand van de relay wisselt elke keer dat de knop wordt ingedrukt. Meer specifiek:

Bij Toepassing 2 moeten we de knop debouncen om ervoor te zorgen dat alles goed werkt. We zullen zien waarom dit belangrijk is door te vergelijken hoe de relay zich gedraagt met en zonder debounce in de Arduino code.

Over Relay en Knop

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

Aansluitschema

Arduino Nano Knop relay aansluitdiagram

This image is created using Fritzing. Click to enlarge image

Toepassing 1 - De relay status is synchroon 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-relay */ const int BUTTON_PIN = 8; // The Arduino Nano pin connected to button's pin const int RELAY_PIN = 2; // The Arduino Nano pin connected to relay's pin 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(RELAY_PIN, OUTPUT); // set arduino pin to output mode } void loop() { int button_state = digitalRead(BUTTON_PIN); // read new state if (button_state == LOW) { Serial.println("The button is being pressed"); digitalWrite(RELAY_PIN, HIGH); // turn on } else if (button_state == HIGH) { Serial.println("The button is unpressed"); digitalWrite(RELAY_PIN, LOW); // turn off } }

Snelle Stappen

  • Verbind een Arduino Nano met uw computer via een USB-kabel.
  • Start de Arduino IDE, en selecteer de juiste board en 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 te uploaden naar de Arduino Nano.
Arduino IDE Upload Code
  • Druk de knop in en houd deze een paar seconden vast.
  • Observeer de verandering in de status van de relay.

U zult zien dat de relay-status synchroon loopt met de knop-status.

Code Uitleg

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

Toepassing 2 - Knop schakelt Relay

Arduino Nano Code - Knop schakelt relay zonder debouncing

/* * 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-relay */ const int BUTTON_PIN = 8; // The Arduino Nano pin connected to button's pin const int RELAY_PIN = 2; // The Arduino Nano pin connected to relay's pin int relay_state = LOW; // The current state of relay 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(RELAY_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 relay relay_state = !relay_state; // control relay according to the toggled state digitalWrite(RELAY_PIN, relay_state); } }

Code Uitleg

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

In de code is de expressie relay_state = !relay_state gelijk aan:

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

Snelle Stappen

  • Kopieer de code en open deze in de Arduino IDE.
  • Upload de code naar de Arduino Nano.
  • Druk de knop meerdere keren in en laat weer los.
  • Observeer hoe de relay-status verandert.

U merkt wellicht dat de relay telkens wisselt zodra u de knop indrukt, maar het kan zijn dat dit niet altijd hetzelfde gebeurt. Soms kan de relay snel meerdere keren schakelen bij één druk op de knop, of helemaal niet schakelen (twee keer snel achter elkaar, wat met het blote oog niet te zien is).

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

Arduino Nano Code - Knop schakelt relay met debouncing

Knop debouncen kan lastig zijn voor beginners. Gelukkig maakt de ezButton library het eenvoudig.

Waarom is debouncing noodzakelijk? Zie de Arduino Nano - Knop Debounce 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-relay */ #include <ezButton.h> const int BUTTON_PIN = 8; // The Arduino Nano pin connected to button's pin const int RELAY_PIN = 2; // The Arduino Nano pin connected to relay's pin ezButton button(BUTTON_PIN); // create ezButton object for pin 7; int relay_state = LOW; // The current state of relay void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(RELAY_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 relay relay_state = !relay_state; // control relay according to the toggled state digitalWrite(RELAY_PIN, relay_state); } }

Snelle Stappen

  • Installeer de ezButton library. Raadpleeg How To voor instructies.
  • Kopieer de code en open die met de Arduino IDE.
  • Klik op de Upload knop in de Arduino IDE om de code naar de Arduino Nano te uploaden.
  • Druk en laat de knop meerdere keren los.
  • Bekijk de verandering in de status van de relay.

U zult merken dat de relay slechts één keer schakelt telkens wanneer u de knop indrukt.

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!