Arduino Nano - Knopbesturing Elektromagnetisch Slot

Deze handleiding legt uit hoe u een Arduino Nano en een knop kunt gebruiken om een deur te bedienen met behulp van een elektromagnetisch slot. Wanneer de knop wordt ingedrukt, wordt de deur gedurende een bepaalde tijd (bijvoorbeeld 10 seconden) ontgrendeld. Daarna wordt deze weer vergrendeld.

We gaan in twee stappen vooruit, van eenvoudig naar moeilijk:

Over de Knop en het Elektromagnetisch Slot

Als u niet bekend bent met elektromagnetische sloten en knoppen (inclusief pinouts, functionaliteit en programmering), kunnen de volgende tutorials u helpen:

Bedradingsschema

Arduino Nano Knop Elektromagnetisch Slot bedradingsschema

This image is created using Fritzing. Click to enlarge image

Arduino Nano Code - Knop bestuurt Elektromagnetisch Slot 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-control-electromagnetic-lock */ #define BUTTON_PIN 8 // The Arduino Nano pin connected to button's pin #define RELAY_PIN 2 // The Arduino Nano pin connected to relay's pin 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 digitalWrite(RELAY_PIN, HIGH); // lock the door 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"); digitalWrite(RELAY_PIN, LOW); // unlock the door in 10 seconds delay(10000); // 10 seconds digitalWrite(RELAY_PIN, HIGH); // lock the door again } }

Snel Starten

  • Verbind een Arduino Nano met een PC via een USB-kabel.
  • Open de Arduino IDE, selecteer de juiste board en poort.
  • Kopieer de bovenstaande code en open die in de Arduino IDE.
  • Klik op de Upload-knop in de Arduino IDE om de code naar de Arduino Nano te uploaden.
  • Plaats de ankerplaat dicht bij de elektromagneet.
  • Druk één keer op de knop.
  • Observeer de aantrekkingskracht tussen de ankerplaat en de elektromagneet gedurende 10 seconden.

Code Uitleg

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

※ Notiz:

In de praktijk werkt de bovenstaande code mogelijk niet altijd correct. Om de correcte werking te garanderen, moeten we debouncing toepassen voor de knop. Debouncing is voor beginners vaak geen gemakkelijke taak. Dankzij de ezButton bibliotheek kan dit echter eenvoudig worden gedaan.

Arduino Nano Code - Knop bestuurt Elektromagnetisch Slot Met Debouncing

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-control-electromagnetic-lock */ #include <ezButton.h> #define BUTTON_PIN 8 // The Arduino Nano pin connected to button's pin #define RELAY_PIN 2 // The Arduino Nano pin connected to relay's pin ezButton button(BUTTON_PIN); // create ezButton object for pin 7; 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 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 } }

Snel Starten

  • Installeer de ezButton bibliotheek. Raadpleeg Hoe te doen voor instructies.
  • Open de code in de Arduino IDE en klik op de Upload-knop om deze naar de Arduino Nano te uploaden.
  • Breng de ankerplaat dichtbij de elektromagneet en druk één keer op de knop.
  • Observeer de aantrekkingskracht tussen de ankerplaat en de elektromagneet gedurende 10 seconden.

※ Notiz:

In bovenstaande code gebruiken we de delay-functie. Daardoor hoeft u geen debouncing voor de knop te implementeren. We bieden echter ook de code met debouncing aan, zodat u additionele taken kunt uitvoeren zonder gebruik te maken van de delay-functie. Zie Hoe millis() te gebruiken in plaats van delay() voor meer informatie.

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!