Arduino - Relé conmutado por botón

En un tutorial anterior, hemos aprendido cómo encender el relé si se pulsa el botón y cómo apagar el relé cuando se suelta. En este tutorial, vamos a aprender cómo alternar el relé cada vez que se pulsa el botón.

Al conectar un relé a una bombilla, una tira de LEDs, un motor o un actuador... Podemos usar el botón para encender y apagar la bombilla, la tira de LEDs, el motor o el actuador...

El tutorial incluye dos partes principales:

Acerca de Relé y Botón

Si no sabes sobre relé y botón (disposición de pines, cómo funciona, cómo programarlos...), aprende sobre ellos en los siguientes tutoriales:

Diagrama de Cableado

Diagrama de cableado de relé con botón para Arduino

This image is created using Fritzing. Click to enlarge image

Código para Arduino - El botón alterna el relé sin 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-toggle-relay */ // 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 relayState = LOW; // the current state of relay 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 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"); // toggle state of relay relayState = !relayState; // control relay arccoding to the toggled state digitalWrite(RELAY_PIN, relayState); } }

Pasos R\u00e1pidos

  • Conecta Arduino al PC mediante un cable USB
  • Abre Arduino IDE, selecciona la placa y el puerto correcto
  • Copia el código anterior y ábrelo con Arduino IDE
  • Haz clic en el botón Subir de Arduino IDE para cargar el código en Arduino
  • Mantén presionado el botón durante varios segundos y luego suéltalo
  • Observa el cambio en el estado del relé

Explicación del código

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

En el código, relayState = !relayState es equivalente al siguiente código:

if(relayState == LOW) relayState = HIGH; else relayState = LOW;

※ Nota:

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

Código de Arduino - Botón que alterna el relé con antirrebote

¿Por qué necesitamos el antirrebote? ⇒ ver Arduino - Tutorial de antirrebote de 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-toggle-relay */ #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; // variables will change: int relayState = LOW; // the current state of relay 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 } void loop() { button.loop(); // MUST call the loop() function first if(button.isPressed()) { Serial.println("The button is pressed"); // toggle state of relay relayState = !relayState; // control relay arccoding to the toggled state digitalWrite(RELAY_PIN, relayState); } }

Pasos R\u00e1pidos

  • Instala la biblioteca ezButton. Ver Cómo instalar la biblioteca
  • Copia el código anterior y ábrelo con el IDE de Arduino
  • Haz clic en el botón Subir del IDE de Arduino para cargar el código en Arduino
  • Presiona el botón varias veces
  • Observa el cambio del estado del relé

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!