Arduino - Un bouton contrôle une serrure électromagnétique

Dans ce tutoriel, nous allons apprendre à utiliser un Arduino et un bouton pour contrôler le verrou électromagnétique. Lorsque le bouton est pressé, l'Arduino désactive le verrou électromagnétique pour déverrouiller la porte pendant un certain temps (par exemple, 10 secondes). Après cela, l'Arduino active le verrou électromagnétique pour verrouiller la porte.

Nous apprendrons en deux étapes, du plus facile au plus difficile :

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×Electromagnetic Lock
1×Relay
1×12V Power Adapter
1×DC Power Jack
1×Push Button
1×(Optional) Panel-mount Push Button
1×Breadboard
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos des boutons et des serrures électromagnétiques

Si vous ne connaissez pas le verrou électromagnétique et le bouton (brochage, fonctionnement, programmation...), renseignez-vous dans les tutoriels suivants :

Diagramme de câblage

Schéma de câblage du verrou électromagnétique à bouton Arduino

This image is created using Fritzing. Click to enlarge image

Code Arduino - Bouton contrôle un verrou électromagnétique sans anti-rebond

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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 } }

Étapes rapides

  • Connectez l'Arduino au PC via le câble USB
  • Ouvrez l'IDE Arduino, sélectionnez la bonne carte et le bon port
  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
  • Cliquez sur le bouton Upload de l'IDE Arduino pour téléverser le code sur l'Arduino
  • Placez la plaque d'armature près de l'électroaimant.
  • Appuyez sur le bouton une fois.
  • Observez l'attraction entre la plaque d'armature et l'électroaimant pendant 10 secondes.

Explication du code

Vous pouvez trouver l'explication dans la ligne de commentaires du code Arduino ci-dessus.

※ NOTE THAT:

En pratique, le code ci-dessus ne fonctionne pas correctement parfois. Pour qu'il fonctionne toujours correctement, nous devons debouncer le bouton. Le debouncing pour le bouton n'est pas facile pour les débutants. Heureusement, grâce à la bibliothèque ezButton, nous pouvons le faire facilement.

Code Arduino - Contrôle d'un verrou électromagnétique avec anti-rebond

Pourquoi avons-nous besoin de debouncing ? ⇒ voir Arduino - Tutoriel sur le Debouncing de Bouton

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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 } }

Étapes rapides

  • Installez la bibliothèque ezButton. Voir Comment faire
  • Copiez le code ci-dessus et ouvrez-le avec Arduino IDE
  • Cliquez sur le bouton Upload dans Arduino IDE pour uploader le code sur Arduino
  • Placez la plaque d'armature près de l'électroaimant.
  • Appuyez sur le bouton une fois.
  • Observez l'attraction entre la plaque d'armature et l'électroaimant pendant 10 secondes.

※ NOTE THAT:

Dans le code ci-dessus, nous avons utilisé la fonction de délai. Par conséquent, nous n'avons pas besoin de faire de l'anti-rebond pour le bouton. Cependant, nous fournissons tout de même le code avec anti-rebond au cas où vous voudriez effectuer plus de tâches sans utiliser la fonction de délai. Voir Comment utiliser millis() au lieu de delay()

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!