Lección 98-3: Cómo encender/apagar un LED conmutador usando un botón pulsador con Arduino
Los botones pulsadores están por todas partes — en mandos a distancia, electrodomésticos y paneles de control — y en el momento en que un solo botón tiene que hacer más de una función, necesitas lógica de conmutación. Este proyecto te muestra cómo hacer que un solo botón pulsador encienda un LED con la primera pulsación y lo apague con la siguiente, de modo que la luz permanezca exactamente donde la dejaste. Ese comportamiento de "pulsar una vez para fijar, pulsar de nuevo para liberar" es la base de casi todos los botones de menú, interruptores de encendido y selectores de modo que llegarás a construir.
Una vez que entiendas la conmutación, el mismo patrón de código se escala a hardware real. Puedes usarlo para:
- Conmutar un relé que controla una lámpara de CA o una luz de escritorio desde un solo botón de panel.
- Arrancar y detener un motor o una bomba con un solo botón en lugar de dos.
- Recorrer los modos de funcionamiento de un dispositivo (por ejemplo, lento / rápido / apagado).
- Construir una alarma con enclavamiento que permanezca encendida hasta que alguien la reconozca.
- Crear un botón de silencio para un proyecto de audio que recuerde su estado.
- Actuar como interruptor de encendido suave para un dispositivo alimentado por batería, reemplazando un interruptor mecánico.
El instructor señala este punto directamente en el video (en el video en 19:52): el proyecto no se trata realmente del LED en absoluto — se trata de la técnica de conmutación, que puedes aplicar a un relé, un controlador de motor o cualquier otra salida.
Hardware y componentes
La lista de piezas es deliberadamente mínima, así que este es un gran proyecto si recién estás comenzando. Necesitas:
- Una placa Arduino — Uno, Nano o Mega funcionan.
- Un LED, de 3 mm o 5 mm, de cualquier color.
- Una resistencia para el LED, de entre 200 Ω y 1000 Ω. La transcripción explica el razonamiento (en el video en 03:49): un LED cae aproximadamente 2 V y consume unos 10 mA, así que con una alimentación de 5 V los 3 V restantes deben caer en la resistencia. La ley de Ohm da 3 V ÷ 0,01 A = 300 Ω, y cualquier valor desde 300 Ω hasta 1000 Ω funcionará — los valores más altos simplemente hacen que el LED sea más tenue.
- Un interruptor de botón pulsador. El video muestra tanto el tipo táctil pequeño de cuatro patas como una versión de patas más largas (en el video en 12:43). Si no tienes un botón pulsador, un interruptor común también funciona — solo encuentra los dos terminales que abren y cierran el circuito.
- Una protoboard y algunos cables jumper DuPont.
Un consejo práctico del video (en el video en 07:50): el botón táctil de cuatro patas tiene dos pares de patas conectadas internamente. Usa un multímetro en modo de continuidad para encontrar qué dos patas pitan juntas — esas son un lado del interruptor. Conecta un lado al pin de entrada y el otro lado a tierra.
Guía de cableado
El cableado es el mismo que el de los circuitos simples de LED y botón pulsador, con el botón añadido encima. El ánodo del LED (la pata más larga) va al pin 3, y su cátodo (la pata más corta, en el lado plano del cuerpo) se conecta a través de la resistencia a tierra. El botón pulsador se conecta entre el pin 2 y tierra — no se necesita nada más, porque el código habilita la resistencia pull-up interna del Arduino.
Vale la pena entender ese pull-up interno: sin él, un pin de entrada flotante leería ruido aleatorio. Habilitar INPUT_PULLUP mantiene el pin a 5 V mientras el botón está abierto, y pulsar el botón lo lleva a 0 V. Por eso el código trata una lectura LOW como "pulsado" — la lógica está invertida en comparación con un interruptor simple a tierra con una resistencia externa.
Explicación del código
El sketch completo está disponible debajo de este artículo. Aquí nos centraremos en las partes que realmente querrás cambiar.
En la parte superior del archivo, las dos asignaciones de pines se definen como constantes. Si mueves tus cables a pines diferentes, este es el único lugar que necesitas editar:
const int pushButtonPin = 2;//define a pin number for push button
const int LEDPin = 3;//define a pin that is connected to LED
Luego vienen las tres variables de estado. Normalmente no necesitas cambiarlas, pero ayuda saber qué hacen:
int pushButtonStatus = 0; // push value from pin 2
int lightStatus = 0;//light status
int pushed = 0;//push statuspushButtonStatus almacena la lectura sin procesar del pin del botón cada vez que se recorre el bucle. lightStatus recuerda lo que leyó el pin del botón en la pasada anterior, que es cómo el sketch detecta el momento de una nueva pulsación en lugar de reaccionar continuamente. pushed es la bandera de alternancia real — cambia entre 0 y 1 y decide si el LED debe estar encendido o apagado.
La alternancia en sí se realiza con un ingenioso truco aritmético (en el video en 18:30). Restar la bandera de uno la invierte: 1 - 0 da 1, y 1 - 1 da 0. Así, una sola línea invierte el estado cada vez que se detecta una nueva pulsación:
pushed = 1-pushed;//toggle the pushed value
delay(100);//give some time for finger to press
El retardo de 100 ms está ahí para dejar que tu dedo se retire del botón. Sin él, una sola pulsación física podría contarse varias veces. Si tu botón se siente poco fiable o tu dedo tiembla, aumenta este valor (en el video en 40:39).
La condición que dispara la alternancia es la clave de todo el sketch. Solo se activa cuando el botón no está presionado (HIGH, debido a la resistencia pull-up) y la lectura anterior era LOW — es decir, el botón acaba de soltarse después de una pulsación:
if(pushButtonStatus == HIGH && lightStatus == LOW){
pushed = 1-pushed;//toggle the pushed value
delay(100);//give some time for finger to press
}
Finalmente, el LED se controla desde la bandera de alternancia, y la lectura actual del botón se guarda para la siguiente comparación:
lightStatus = pushButtonStatus;
if(pushed == HIGH){
Serial.println("Light ON");
digitalWrite(LEDPin, HIGH); //turn the LED ON
}else{
Serial.println("Light OFF");
digitalWrite(LEDPin, LOW);//turn the LED OFF
}
También puedes abrir el Monitor Serie a 9600 baudios para ver los mensajes "Light ON" y "Light OFF" mientras presionas el botón.
Demostración en vivo
En el video (en el video en 19:41) puedes ver el comportamiento en acción: la primera pulsación enciende el LED y permanece encendido después de soltar el dedo. La siguiente pulsación lo apaga, y permanece apagado. No hay necesidad de mantener presionado el botón, que es exactamente la diferencia entre este proyecto y la versión más simple de "mantener para encender" cubierta en Lección 98-2: Cómo encender y apagar un LED usando un pulsador con Arduino.
El video también señala que puedes cambiar el LED por un módulo de relé para conmutar dispositivos alimentados por la red eléctrica, o por un controlador de motor para arrancar y detener un motor. La lógica de alternancia no cambia — solo lo hace el dispositivo de salida.
Otras variaciones mostradas en el mismo video — el desvanecimiento del LED, el patrón de balancín, la luz caminante, el medidor de barra de voltaje y el semáforo — se cubren cada una en sus propios tutoriales, enlazados abajo.
Proyectos relacionados de este video
- Lección 98-1: Cómo encender y apagar un LED con Arduino
- Lección 98-2: Cómo encender y apagar un LED usando un pulsador con Arduino
- Lección 98-4: Desvanecer una luz LED usando Arduino: Control de brillo
- Lección 98-5: Desvanecer la luz cuando se presiona un botón usando Arduino
- Lección 98-6: Juego de LED balancín con Arduino
- Lección 98-7: Luz caminante usando Arduino y 5 LEDs
- Lección 98-8: Luz caminante con pulsador y LEDs con Arduino
- Lección 98-9: Medidor de nivel de voltaje LED usando Arduino o luz caminante con potenciómetro
- Lección 98-10: Semáforo con Arduino
Capítulos
- [00:00] Resumen de los 10 proyectos con LED
- [01:00] Introducción al curso paso a paso de Arduino
- [02:29] Fundamentos del LED: símbolo, ánodo, cátodo y cálculo de resistencia
- [05:53] Proyecto 1: Encender y apagar un LED
- [12:43] Proyecto 2: Un pulsador controla el LED
- [17:13] Proyecto 3: El pulsador alterna el encendido y apagado del LED
- [20:12] Proyecto 4: Desvanecer un LED
- [23:20] Proyecto 5: Desvanecer un LED con un pulsador
- [27:32] Proyecto 6: Balancín con dos LEDs
- [30:47] Proyecto 7: Luz caminante con cinco LEDs
- [36:41] Proyecto 8: Luz caminante avanzada con pulsador
- [42:25] Proyecto 9: Medidor de nivel de voltaje LED con potenciómetro
- [49:25] Proyecto 10: Semáforo con Arduino
This code has not been parsed yet. Please return to the admin panel to parse it.
Cosas que podrías necesitar
-
AmazonasSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazonas
-
Amazonas
-
Amazonas
Recursos y referencias
-
Documentación
-
Externo
-
Externo
-
Externo
Archivos📁
Bibliotecas de Arduino (zip)
-
Código fuente del kit de aprendizaje para autos inteligentes 3 en 1 de SunFounder
3in1-kit-main-v2.zip12.80 MB
Manual del Usuario
-
Manual de ensamblaje del coche inteligente Arduino 3 en 1 de SunFounderEste documento muestra el ensamblaje paso a paso del coche inteligente Arduino 3 en 1 de SunFounder
SunFounder_car_assembly_manual.pdf1.20 MB