Arduino - LED que se enciende y apaga con un botón

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

El tutorial incluye dos partes principales:

Hardware Requerido

1×Arduino Uno R3
1×Cable USB 2.0 tipo A/B (para PC USB-A)
1×Cable USB 2.0 tipo C/B (para PC USB-C)
1×Botón para Protoboard con Tapa
1×Kit de Botón para Protoboard
1×Botón Pulsador de Panel
1×Módulo de Botón Pulsador
1×LED Kit
1×LED (red)
1×LED Module
1×220Ω Resistor
1×Protoboard
1×Cables Puente
1×(Recomendado) Shield de Bloque de Terminales de Tornillo para Arduino Uno
1×(Recomendado) Shield de Protoboard para Arduino Uno
1×(Recomendado) Carcasa para Arduino Uno
1×(Recomendado) Placa Base de Prototipado y Kit de Protoboard para Arduino Uno

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Buy Note: Use the LED Module for easier wiring. It includes an integrated resistor.

Acerca de LED y Botón

Si no sabes nada sobre un LED y un botón (disposición de pines, cómo funcionan, cómo programarlos...), aprende sobre ellos en los siguientes tutoriales:

Diagrama de Cableado

Diagrama de cableado de Arduino para botón con LED

This image is created using Fritzing. Click to enlarge image

Código de Arduino - El botón alterna el LED sin antirrebote

/* * 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-led */ // constants won't change const int BUTTON_PIN = 7; // Arduino pin connected to button's pin const int LED_PIN = 3; // Arduino pin connected to LED's pin // variables will change: int ledState = LOW; // the current state of LED 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(LED_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 LED ledState = !ledState; // control LED arccoding to the toggled state digitalWrite(LED_PIN, ledState); } }

Pasos R\u00e1pidos

  • Conecta el Arduino a la PC mediante un cable USB
  • Abre el IDE de Arduino y 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 del IDE de Arduino 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 LED

Explicación del código

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

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

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

※ Nota:

En la práctica, el código anterior a veces no funciona correctamente. Para que funcione siempre correctamente, necesitamos aplicar rebote para el 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 alterna el LED con rebote

¿Por qué necesitamos el rebote? ⇒ ver Arduino - Tutorial de rebote 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-led */ #include <ezButton.h> /// constants won't change const int BUTTON_PIN = 7; // the number of the pushbutton pin const int LED_PIN = 3; // the number of the LED pin ezButton button(BUTTON_PIN); // create ezButton object that attach to pin 7; // variables will change: int ledState = LOW; // the current state of LED void setup() { Serial.begin(9600); // initialize serial pinMode(LED_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 LED ledState = !ledState; // control LED arccoding to the toggleed sate digitalWrite(LED_PIN, ledState); } }

Pasos R\u00e1pidos

  • Instala la biblioteca ezButton. Consulta Cómo hacerlo
  • Copia el código anterior y ábrelo con Arduino IDE
  • Haz clic en el botón Subir en Arduino IDE para subir el código al Arduino
  • Presiona el botón varias veces
  • Observa el cambio en el estado del LED

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!