Código de búsqueda

Lección 98-4: Atenuación de una luz LED usando Arduino: Control de brillo

Lección 98-4: Atenuación de una luz LED usando Arduino: Control de brillo

Los LED están en todas partes — indicadores, pantallas, iluminación decorativa — pero la mayoría de los principiantes se detienen en simplemente encenderlos y apagarlos. Este proyecto da el siguiente paso: atenuar suavemente un LED de forma gradual usando la capacidad PWM (Modulación por Ancho de Pulso) integrada del Arduino. En lugar de un parpadeo brusco, obtienes un aumento y descenso gradual del brillo que imita la atenuación natural, los efectos de respiración y un control similar al analógico desde un pin puramente digital. Es uno de los primeros proyectos más satisfactorios porque puedes ver el resultado de inmediato, y la misma técnica sustenta el control de velocidad de motores, el volumen de audio y la atenuación de retroiluminación en productos reales.

LED-5mm-green

Una vez que entiendes la atenuación, puedes aplicarla a una amplia gama de proyectos prácticos:

  • Crear un indicador de estado "respirante" en un dispositivo que pulse suavemente en lugar de parpadear de forma molesta
  • Atenuar una luz nocturna LED automáticamente según la luz ambiental o la hora del día
  • Controlar el brillo de una retroiluminación en una pantalla LCD u OLED
  • Construir iluminación de ambiente o lámparas decorativas con transiciones suaves entre niveles de brillo
  • Simular un despertador de amanecer lento que se ilumina gradualmente para despertarte de forma natural
  • Agregar control de velocidad a pequeños motores DC o ventiladores (se aplica el mismo principio PWM)

Este tutorial es parte del Curso Paso a Paso de Arduino de Robojax, y cubre específicamente el Proyecto 4 de 10: Atenuar una Luz LED Usando Arduino. El programa completo está disponible para descargar debajo del artículo.

Hardware y Componentes

330_ohm_resistor
Resistencia de 330 ohmios 0.25 vatios

La lista de piezas para este proyecto es mínima — si has hecho algún trabajo con Arduino antes, probablemente ya tengas todo lo que necesitas:

  • 1× Placa Arduino (Uno, Nano, Mega, o cualquier placa compatible)
  • 1× LED (5mm o 3mm, cualquier color)
  • 1× Resistencia (200Ω a 1000Ω — un rango de 300Ω a 1kΩ funciona bien)
  • Protoboard y cables jumper DuPont
  • Cable USB para programación y alimentación

Una nota importante sobre el LED: la pata más larga es el ánodo (positivo), y la pata más corta — o el lado con el borde plano en la carcasa de plástico — es el cátodo (negativo). Poner esto al revés significa que el LED simplemente no se encenderá, así que verifica dos veces antes de encender.

Para el valor de la resistencia, la transcripción explica los cálculos en (en video a las 03:49): un LED típico cae alrededor de 2V y necesita aproximadamente 10mA de corriente. Con un suministro de 5V, los 3V restantes deben caer a través de la resistencia, dando R = V/I = 3V / 0.01A = 300Ω. En la práctica, cualquier valor desde 300Ω hasta 1000Ω funcionará — valores más altos solo producen un LED más tenue. Para la atenuación, esto es realmente aceptable, ya que de todos modos estás variando el brillo.

Guía de Cableado

Arduino schematic for two LEDs see saw
Esquema de Arduino para dos LED tipo balancín
Arduino wiring for two LEDs see saw
Cableado de Arduino para dos LED tipo balancín

El cableado es tan simple como parece. El ánodo del LED se conecta a través de una resistencia a un pin compatible con PWM en el Arduino — en este proyecto, el pin 3. El cátodo se conecta a tierra.

¿Por qué específicamente el pin 3? Porque no todos los pines del Arduino soportan PWM. En la mayoría de las placas Arduino, los pines compatibles con PWM están marcados con un símbolo de tilde (~) — típicamente los pines 3, 5, 6, 9, 10 y 11 en un Uno. Si usas un pin no PWM, analogWrite() no producirá una salida variable; el LED simplemente estará encendido o apagado.

Conecta el circuito de la siguiente manera:

  1. Inserta el LED en la protoboard, observando qué pata es el ánodo (más larga) y cuál es el cátodo (más corta/lado plano).
  2. Conecta el ánodo del LED al pin 3 del Arduino a través de la resistencia.
  3. Conecta el cátodo del LED al pin GND del Arduino.
  4. Conecta el Arduino a tu computadora vía USB.

Explicación del Código

El sketch para este proyecto está basado en el clásico ejemplo "Fade" de Arduino, con algunos ajustes. En lugar de explicar cada línea, enfoquémonos en las partes que querrás ajustar para tus propios experimentos.

Variables Configurables por el Usuario

Al inicio del código, tres variables controlan todo el comportamiento:

int led = 3;           // the PWM pin the LED is attached to
int brightness = 0;    // how bright the LED is
int fadeAmount = 3;    // how many points to fade the LED by
  • led — Esto define a qué pin está conectado el LED. El valor predeterminado es el pin 3, pero puedes cambiarlo a cualquier pin compatible con PWM (marcado con ~ en tu placa). Si mueves el LED a un pin diferente, actualiza este valor para que coincida.
  • brightness — Este es el nivel de brillo actual, que va de 0 (apagado) a 255 (brillo máximo). El código lo inicia en 0, pero podrías iniciarlo en cualquier punto de ese rango.
  • fadeAmount — Este es el más interesante para experimentar. Controla cuántos "pasos" de brillo se dan en cada ciclo. Un valor pequeño como 3 produce un desvanecimiento lento y gradual. Un valor mayor como 20 hace que el LED se desvanezca hacia adentro y hacia afuera muy rápidamente. La transcripción demuestra esto en (en video en 22:37) — cambiar de 5 a 20 acelera drásticamente el efecto.

Cómo Funciona el Desvanecimiento

El núcleo del desvanecimiento ocurre en dos líneas dentro de loop():

analogWrite(led, brightness);
brightness = brightness + fadeAmount;

En cada pasada por el bucle, el valor de brillo actual se escribe en el LED usando analogWrite(), luego el brillo se incrementa en fadeAmount. La función analogWrite() usa PWM para simular un voltaje analógico — cambia rápidamente el pin entre encendido y apagado, y la proporción de tiempo encendido respecto al tiempo apagado determina el brillo percibido.

Cuando el brillo alcanza 0 o 255, el código invierte la dirección cambiando el signo de fadeAmount:

if (brightness <= 0 || brightness >= 255) {
  fadeAmount = -fadeAmount;
}

Esto es lo que hace que el LED se desvanezca hacia adentro, luego hacia afuera, y luego hacia adentro de nuevo — un ciclo de respiración continuo. El delay(30) al final del bucle controla la velocidad general de la animación. Un retardo más corto hace que el desvanecimiento sea más rápido; un retardo más largo lo ralentiza.

Experimentando con los Valores

Dos variables te dan el mayor control sobre el efecto visual:

  • Aumenta fadeAmount para un desvanecimiento más rápido y dramático. Prueba 10 o 20.
  • Disminuye fadeAmount para un efecto de respiración lento y suave. Prueba 1 o 2.
  • Ajusta el valor de delay() para cambiar el ritmo. Retardos más pequeños hacen que todo el ciclo sea más rápido; retardos más grandes lo extienden.

Combinar un fadeAmount pequeño con un retardo corto produce un desvanecimiento extremadamente suave, casi orgánico — ideal para iluminación ambiental. Un fadeAmount grande con un retardo corto crea un efecto de pulsación rápida.

Demostración del Proyecto en Vivo

Una vez que el código se carga, verás que el LED se ilumina lentamente desde apagado hasta brillo máximo, luego se atenúa de nuevo, repitiéndose indefinidamente. La transcripción muestra el comportamiento predeterminado en (en video en 22:25) — un desvanecimiento suave a velocidad moderada.

Cuando fadeAmount se cambia a 20, el LED se desvanece hacia adentro y hacia afuera muy rápidamente — casi como un parpadeo. Cuando se establece en 3, el desvanecimiento tarda notablemente más, creando una transición relajada y gradual. Esto se demuestra claramente en el video en (en video en 23:02).

La belleza de este proyecto es que puedes ver el efecto de tus cambios en el código de inmediato — no se necesitan cambios en el cableado, solo edita las variables y vuelve a cargar. Ese ciclo de retroalimentación tan ajustado lo convierte en una excelente manera de desarrollar intuición sobre cómo interactúan PWM y la temporización.

Si quieres llevar esto más lejos activando el desvanecimiento con un botón pulsador en lugar de dejarlo funcionar continuamente, eso se cubre en un tutorial separado — consulta la sección de proyectos relacionados a continuación.

Proyectos relacionados de este video

Capítulos

  • [00:00] Resumen de los 10 proyectos de LED con Arduino
  • [01:22] Introducción al curso y componentes necesarios
  • [02:29] Entendiendo los LEDs: símbolos, polaridad y tipos
  • [03:49] Calculando el valor de la resistencia del LED usando la ley de Ohm
  • [05:53] Proyecto 1: Encender y apagar un LED
  • [12:43] Proyecto 2: Control de LED con un botón pulsador
  • [17:13] Proyecto 3: LED con alternancia mediante botón pulsador
  • [20:12] Proyecto 4: Desvanecer un LED — recorrido por el código
  • [22:25] Demostración del desvanecimiento y ajuste de la velocidad de desvanecimiento
  • [23:20] Proyecto 5: Desvanecimiento de LED con activación por botón pulsador
  • [27:32] Proyecto 6: Efecto de LED sube y baja
  • [30:47] Proyecto 7: Luz caminante con 5 LEDs
  • [36:41] Proyecto 8: Luz caminante controlada por botón pulsador
  • [42:25] Proyecto 9: Medidor de nivel de voltaje LED con potenciómetro
  • [49:25] Proyecto 10: Semáforo con Arduino

Imágenes

Arduino wiring for LED  with resistor
Arduino wiring for LED with resistor
Arduino schematic for LED
Arduino schematic for LED
Arduino wiring for two LEDs see saw
Arduino wiring for two LEDs see saw
Arduino schematic for two LEDs see saw
Arduino schematic for two LEDs see saw
LED-5mm-green
LED-5mm-green
330_ohm_resistor
330_ohm_resistor
936-Lessson 98-LED-4: Arduino code to fade the LED light
Idioma: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Archivos📁

Bibliotecas de Arduino (zip)

Manual del Usuario