Arduino - Knop bedient elektromagneetslot

In deze handleiding leert u hoe u een Arduino en een knop gebruikt om een elektromagneetslot te bedienen. Wanneer de knop wordt ingedrukt, schakelt de Arduino het elektromagneetslot uit om de deur gedurende een bepaalde tijd (bijvoorbeeld 10 seconden) te ontgrendelen. Daarna schakelt de Arduino het elektromagneetslot weer in om de deur te vergrendelen.

We doorlopen twee stappen van gemakkelijk naar moeilijk:

Over Knop en Elektromagneetslot

Als u nog niet bekend bent met het elektromagneetslot en de knop (pinout, werking, programmeren, etc.), leer er dan meer over in de volgende tutorials:

Bedradingsschema

Arduino Knop Elektromagneetslot Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Arduino Code - Knop bedient elektromagneetslot 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-controls-electromagnetic-lock */ // 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 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 digitalWrite(RELAY_PIN, HIGH); // lock the door 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"); digitalWrite(RELAY_PIN, LOW); // unlock the door in 10 seconds delay(10000); // 10 seconds digitalWrite(RELAY_PIN, HIGH); // lock the door again } }

Snelle Stappen

  • Verbind Arduino via USB-kabel met uw PC
  • Open de Arduino IDE, selecteer het juiste board en poort
  • Kopieer bovenstaande code en open deze met de Arduino IDE
  • Klik op de Upload knop in de Arduino IDE om de code naar de Arduino te uploaden
  • Plaats de ankerplaat dichtbij de elektromagneet
  • Druk één keer op de knop
  • Zie de aantrekkingskracht tussen de ankerplaat en elektromagneet gedurende 10 seconden

Code Uitleg

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

※ Notiz:

In de praktijk werkt bovenstaande code soms niet correct. Om dit altijd goed te laten functioneren, is het nodig om debouncing voor de knop toe te passen. Debouncing voor knoppen is niet eenvoudig voor beginners. Gelukkig kan dit met dank aan de ezButton bibliotheek eenvoudig worden opgelost.

Arduino Code - Knop bedient elektromagneetslot met debouncing

Waarom hebben we 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-controls-electromagnetic-lock */ #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; 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 digitalWrite(RELAY_PIN, HIGH); // lock the door } void loop() { button.loop(); // MUST call the loop() function first if(button.isPressed()) { Serial.println("The button is pressed"); digitalWrite(RELAY_PIN, LOW); // unlock the door in 10 seconds delay(10000); // 10 seconds digitalWrite(RELAY_PIN, HIGH); // lock the door again } }

Snelle Stappen

  • Installeer de ezButton bibliotheek. Zie Hoe
  • Kopieer de bovenstaande code en open deze met de Arduino IDE
  • Klik op de Upload knop in de Arduino IDE om code naar de Arduino te uploaden
  • Plaats de ankerplaat dichtbij de elektromagneet
  • Druk één keer op de knop
  • Zie de aantrekkingskracht tussen de ankerplaat en elektromagneet gedurende 10 seconden

※ Notiz:

In bovenstaande code gebruiken we de delay functie. Daarom is debouncing voor de knop niet noodzakelijk. We bieden de code met debouncing echter aan voor het geval u meerdere taken wilt uitvoeren zonder de delay functie te gebruiken. Zie Hoe millis() in plaats van delay() te gebruiken

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 elektromagneetslot te bedienen met Arduino en een knop.

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