Arduino Nano - Cerradura electromagnética controlada por botón

El tutorial explica cómo usar Arduino Nano y un botón para controlar la cerradura de la puerta mediante una cerradura electromagnética. Cuando se presione el botón, la puerta quedará desbloqueada por un tiempo específico (por ejemplo, 10 segundos). Después de eso, volverá a estar cerrada.

Progresaremos en dos pasos de fácil a difícil:

Acerca de Botón y Cerradura Electromagnética

Si no estás familiarizado con cerraduras y botones electromagnéticos (incluida la distribución de pines, la funcionalidad y la programación), los siguientes tutoriales pueden ayudar:

Diagrama de Cableado

Diagrama de cableado de Arduino Nano, botón y cerradura electromagnética

This image is created using Fritzing. Click to enlarge image

Ver La mejor forma de alimentar Arduino Nano y otros componentes.

Código de Arduino Nano - El botón controla la cerradura electromagnética sin rebote

/* * Este código de Arduino Nano fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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 } }

Pasos R\u00e1pidos

  • Conecta un Arduino Nano a un PC con un cable USB.
  • Abre el IDE de Arduino, selecciona la placa y el puerto adecuados.
  • Copia el código anterior y ábrelo en el IDE de Arduino.
  • Haz clic en el botón Subir en el IDE de Arduino para cargar el código al Arduino Nano.
  • Coloca la placa de armadura cerca del electroimán.
  • Pulsa el botón una vez.
  • Observa la atracción entre la placa de armadura y el electroimán durante 10 segundos.

Explicación del código

¡Echa un vistazo a la explicación línea por línea contenida en los comentarios del código fuente!

※ Nota:

En la práctica, el código mencionado arriba puede no funcionar siempre correctamente. Para garantizar su correcto funcionamiento, necesitamos filtrar el rebote del botón. El filtrado del rebote del botón no es una tarea sencilla para los principiantes. Sin embargo, gracias a la biblioteca ezButton, se puede hacer fácilmente.

Código para Arduino Nano - Botones de control de una cerradura electromagnética con antiprebote

¿Por qué es necesario el filtrado de rebotes? Consulte el Arduino Nano - Button Debounce tutorial para obtener más información.

/* * Este código de Arduino Nano fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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 } }

Pasos R\u00e1pidos

  • Instala la biblioteca ezButton. Consulta Cómo hacerlo para obtener instrucciones.
  • Abre el código en el IDE de Arduino y haz clic en el botón Subir para cargarlo al Arduino Nano.
  • Coloca la placa de armadura cerca del electroimán y presiona el botón una vez.
  • Observa la atracción entre la placa de armadura y el electroimán durante 10 segundos.

※ Nota:

En el código anterior, utilizamos la función delay. En consecuencia, no es necesario implementar el antirrebote para el botón. Sin embargo, todavía ofrecemos el código con antirrebote por si desea realizar tareas adicionales sin usar la función delay. Consulte Cómo usar millis() en lugar de delay para obtener más información.

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!