Introducción
¡Bienvenido a tu primer proyecto de PWM (Modulación por Ancho de Pulso)! En este tutorial, construiremos un circuito simple que atenúa suavemente un LED desde apagado hasta brillante y viceversa. Este es un proyecto clásico para principiantes en Arduino que te enseña a usar analogWrite() para controlar el brillo, la velocidad de un motor o cualquier dispositivo que responda a un voltaje promedio variable.
Usaremos Velxio, un simulador de circuitos en el navegador con soporte analógico preciso basado en SPICE. ¡No necesitas hardware, solo tu navegador! Puedes seguir el tutorial, editar el código y ver los resultados al instante.

Explicación del Circuito
Veamos los componentes y el cableado para este proyecto.
Componentes
| Componente | Cantidad | Notas |
|---|---|---|
| Arduino Uno | 1 | El cerebro de la operación |
| LED (cualquier color) | 1 | Usaremos un LED azul |
| Resistencia (220 Ω) | 1 | Resistencia limitadora de corriente (no mostrada en el esquema pero recomendada) |
| Cables de puente | 2 | Para las conexiones |
Cableado
- Ánodo del LED (pata larga) → Conectar al pin 9 del Arduino (un pin compatible con PWM).
- Cátodo del LED (pata corta) → Conectar a GND en el Arduino.
Importante: Usa siempre una resistencia limitadora de corriente (típicamente de 220 Ω a 1 kΩ) en serie con el LED para evitar que se queme. En el simulador Velxio, el modelo del LED incluye resistencia interna, pero en la vida real debes añadir una.
Aquí está el cableado en detalle:
- Cable 1 (azul): Desde el pin 9 del Arduino al ánodo del LED (A).
- Cable 2 (negro): Desde el cátodo del LED (C) a GND del Arduino.
¡Eso es todo! Solo dos conexiones. El pin 9 del Arduino puede emitir una señal PWM, que usaremos para variar el brillo del LED.

Explicación del Código
Abre el editor de código en Velxio. Verás el siguiente sketch de Arduino:
// Fade LED with PWM
// Smoothly fade LED brightness
const int LED_PIN = 9; // PWM pin
int brightness = 0;
int fadeAmount = 5;
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
analogWrite(LED_PIN, brightness);
brightness += fadeAmount;
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
delay(30);
}
Cómo Funciona
LED_PIN = 9: Usamos el pin 9 porque admite PWM (marcado con una~en el Arduino Uno).brightness: Esta variable contiene el valor PWM actual (de 0 a 255). 0 = apagado, 255 = brillo máximo.fadeAmount: Cuánto cambia el brillo en cada ciclo. Positivo = aumenta el brillo, negativo = lo disminuye.setup(): Configura el pin del LED como salida.loop():analogWrite(LED_PIN, brightness)emite la señal PWM.brightness += fadeAmountaumenta o disminuye el brillo.- La sentencia
ifcomprueba si el brillo ha llegado a 0 o 255. Si es así, invierte la dirección negandofadeAmount. delay(30)ralentiza la atenuación para que puedas verla.
Conceptos Clave
- PWM (Modulación por Ancho de Pulso): Una técnica en la que el pin digital se enciende y apaga rápidamente. El voltaje promedio (y por tanto el brillo del LED) depende del ciclo de trabajo (tiempo encendido vs. tiempo apagado).
analogWrite()establece el ciclo de trabajo. analogWrite(): Acepta valores de 0 (siempre apagado) a 255 (siempre encendido).pinMode(): Configura el pin como salida (o entrada).delay(): Pausa el programa durante milisegundos. Sin ella, la atenuación sería demasiado rápida para verla.
Problemas Comunes y Consejos de Depuración
-
¿El LED no se enciende?
- Verifica que el LED esté conectado correctamente (ánodo al pin 9, cátodo a GND).
- Asegúrate de que el código esté cargado (haz clic en el botón Ejecutar de la barra de herramientas).
- Comprueba que
LED_PINcoincida con el pin real utilizado.
-
¿El LED se queda al máximo brillo?
- Asegúrate de usar un pin compatible con PWM (3, 5, 6, 9, 10, 11 en el Uno). El pin 13 no es PWM.
- Verifica que se llame a
analogWrite(), no adigitalWrite().
-
¿La atenuación es demasiado rápida o lenta?
- Ajusta el valor de
delay(30). Más grande = atenuación más lenta. - Cambia
fadeAmountpara controlar el tamaño del paso (por ejemplo, 1 para muy suave, 10 para más rápido).
- Ajusta el valor de
-
¿El simulador no responde?
- Usa el botón Restablecer en la barra de herramientas del lienzo.
- Refresca la página si es necesario.

Extensiones Sugeridas
Una vez que domines la atenuación básica, prueba estos desafíos:
- Múltiples LEDs: Añade dos LEDs más en los pines 10 y 11. Haz que se atenúen en secuencia o a diferentes velocidades.
- Control con botón: Añade un pulsador para iniciar/detener la atenuación.
- Control de velocidad con potenciómetro: Usa un potenciómetro para ajustar la velocidad de atenuación (reemplaza
delay(30)con una variable leída de una entrada analógica). - LED RGB: Usa un LED RGB y atenúa diferentes colores controlando tres pines PWM.
- Monitor serie: Imprime el valor de brillo en el Monitor Serie para depuración.
¡Pruébalo Tú Mismo!
¿Listo para verlo en acción? Abre el ejemplo en vivo en Velxio:
👉 Iniciar el ejemplo de atenuación de LED
Puedes editar el código, cambiar la velocidad de atenuación o incluso añadir nuevos componentes. El simulador se ejecuta completamente en tu navegador, sin descargas ni configuración.
¡Feliz atenuación!