Arduino - Schakelrelais met Knop

In een vorige tutorial hebben we geleerd hoe we het relais aanzetten als de knop wordt ingedrukt, en het relais uitzetten zodra de knop wordt losgelaten. In deze tutorial gaan we leren hoe u het relais schakelt (toggle) elke keer dat de knop wordt ingedrukt.

Door het relais te verbinden met een gloeilamp, led-strip, motor of actuator... kunt u met de knop de gloeilamp, led-strip, motor of actuator aan- en uitzetten.

De tutorial bestaat uit twee hoofdonderdelen:

Over Relay en Knop

Als u nog niet bekend bent met relais en knoppen (pinout, hoe ze werken, hoe te programmeren ...), leer er meer over in de volgende tutorials:

Aansluitschema

Arduino Knop Relais Aansluitschema

This image is created using Fritzing. Click to enlarge image

Arduino Code - Knop Schakelt Relais Zonder Debouncing

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-button-toggle-relay */ // constants won't change const int BUTTON_PIN = 7; // Arduino pin connected to button's pin const int RELAY_PIN = 3; // Arduino pin connected to relay's pin // variables will change: int relayState = LOW; // the current state of relay int lastButtonState; // the previous state of button int currentButtonState; // the current state of button void setup() { Serial.begin(9600); // initialize serial pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode currentButtonState = digitalRead(BUTTON_PIN); } void loop() { lastButtonState = currentButtonState; // save the last state currentButtonState = digitalRead(BUTTON_PIN); // read new state if(lastButtonState == HIGH && currentButtonState == LOW) { Serial.println("The button is pressed"); // toggle state of relay relayState = !relayState; // control relay arccoding to the toggled state digitalWrite(RELAY_PIN, relayState); } }

Snelle Stappen

  • Verbind de Arduino met uw pc via de USB-kabel
  • Open de Arduino IDE, selecteer het juiste board en de juiste poort
  • Kopieer bovenstaande code en open deze in de Arduino IDE
  • Klik op de Upload knop in de Arduino IDE om de code naar de Arduino te uploaden
  • Houd de knop enkele seconden ingedrukt en laat deze vervolgens los
  • Zie de status van het relais veranderen

Code Uitleg

Lees de regel-voor-regel uitleg in de commentaarregels in de code!

In de code is relayState = !relayState gelijk aan de volgende code:

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

※ Notiz:

In de praktijk werkt bovenstaande code soms niet correct. Om het altijd goed te laten werken, moeten we de knop debouncen. Debouncing is echter niet eenvoudig voor beginners. Gelukkig kunnen we dankzij de ezButton bibliotheek dit gemakkelijk doen.

Arduino Code - Knop Schakelt Relais Met Debouncing

Waarom is debouncing nodig? Zie Arduino - Knop Debounce tutorial

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-button-toggle-relay */ #include <ezButton.h> // constants won't change const int BUTTON_PIN = 7; // Arduino pin connected to button's pin const int RELAY_PIN = 3; // Arduino pin connected to relay's pin ezButton button(BUTTON_PIN); // create ezButton object that attach to pin 7; // variables will change: int relayState = LOW; // the current state of relay void setup() { Serial.begin(9600); // initialize serial 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 relayState = !relayState; // control relay arccoding to the toggled state digitalWrite(RELAY_PIN, relayState); } }

Snelle Stappen

  • Installeer de ezButton bibliotheek. Zie Hoe te doen
  • Kopieer bovenstaande code en open deze in Arduino IDE
  • Klik op de Upload knop in Arduino IDE om de code naar de Arduino te uploaden
  • Druk meerdere keren op de knop
  • Zie de status van het relais veranderen

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 om u snel aan de slag te helpen.

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