Arduino - Botón que controla la cerradura electromagnética

En este tutorial, vamos a aprender cómo usar Arduino y un botón para controlar la cerradura electromagnética. Cuando se pulsa el botón, Arduino desactiva la cerradura electromagnética para desbloquear la puerta durante un cierto tiempo (por ejemplo, 10 segundos). Después de eso, Arduino vuelve a activar la cerradura electromagnética para bloquear la puerta.

Aprenderemos en dos pasos, de fácil a difícil:

Acerca del Botón y la Cerradura Electromagnética

Si no sabes sobre la cerradura electromagnética y el botón (disposición de pines, cómo funciona, cómo programar ...), aprende sobre ellos en los siguientes tutoriales:

Diagrama de Cableado

Diagrama de cableado de la cerradura electromagnética con botón para Arduino

This image is created using Fritzing. Click to enlarge image

Código de Arduino - Botón que controla la cerradura electromagnética sin anti-rebote

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

Pasos R\u00e1pidos

  • Conecta Arduino al PC mediante un cable USB.
  • Abre el IDE de Arduino, selecciona la placa y el puerto correctos.
  • Copia el código anterior y ábrelo con el IDE de Arduino.
  • Haz clic en el botón Cargar en el IDE de Arduino para cargar el código en Arduino.
  • Coloca la placa de armadura cerca del electroimán.
  • Presiona 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

Puedes encontrar la explicación en la línea de comentarios del código de Arduino anterior.

※ Nota:

En la práctica, el código anterior a veces no funciona correctamente. Para que funcione siempre correctamente, necesitamos rebote del botón. El rebote del botón no es fácil para los principiantes. Afortunadamente, gracias a la biblioteca ezButton, podemos hacerlo fácilmente.

Código de Arduino: El botón controla la cerradura electromagnética con rebote

¿Por qué necesitamos el antirrebote? ⇒ ver Arduino - Tutorial de antirrebote del botón

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

Pasos R\u00e1pidos

  • Instala la biblioteca ezButton. Consulta Cómo hacerlo
  • Copia el código anterior y ábrelo con el IDE de Arduino
  • Haz clic en el botón Subir en el IDE de Arduino para subir el código a Arduino
  • 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.

※ Nota:

En el código anterior, usamos la función delay. Por lo tanto, no necesitamos antirrebote para el botón. Sin embargo, todavía proporcionamos el código con antirrebote por si quieres realizar más tareas sin usar la función delay. Consulte Cómo usar millis() en lugar de delay().

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!