04. Atenuador de LED con potenciómetro (PWM)
Controla el brillo de un LED girando un mando. Descubre el PWM, el truco con el que los microcontroladores 'simulan' voltajes intermedios.
🧰 Lista de materiales
🎯 Qué vas a aprender
Vas a unir una entrada analógica (potenciómetro) con una salida PWM (brillo del LED). Entenderás qué es la modulación por ancho de pulso y cómo escalar rangos con map().
📚 Teoría: qué es el PWM
El Arduino no puede dar «media tensión» en sus salidas: solo 0 V o 5 V. Para regular brillo usa PWM (Pulse Width Modulation): enciende y apaga el pin miles de veces por segundo. Si está encendido el 25% del tiempo, el LED recibe de media el 25% de la potencia y brilla a un cuarto. El ojo no percibe el parpadeo.
La proporción de tiempo encendido se llama ciclo de trabajo (duty cycle). En Arduino se controla con analogWrite(pin, valor), donde valor va de 0 (apagado) a 255 (siempre encendido). Solo funciona en los pines marcados con ~ (3, 5, 6, 9, 10, 11).
map() reescala un rango a otro automáticamente.🔌 Conexiones
| Pin del potenciómetro | Hasta |
|---|---|
| Extremo izquierdo | GND |
| Extremo derecho | 5 V |
| Central (cursor) | A0 |
| LED ánodo | D9 (~) vía 220 Ω |
| LED cátodo | GND |
💻 Código completo
// Atenuador de LED con potenciómetro
const int PIN_POT = A0;
const int PIN_LED = 9; // debe ser un pin PWM (~)
void setup() {
pinMode(PIN_LED, OUTPUT);
}
void loop() {
int lectura = analogRead(PIN_POT); // 0..1023
int brillo = map(lectura, 0, 1023, 0, 255); // reescala a 0..255
analogWrite(PIN_LED, brillo); // aplica el PWM
delay(10);
}🛠️ Montaje paso a paso
- Coloca el potenciómetro en la breadboard; sus 3 patas en filas distintas.
- Cablea extremos a GND y 5 V, y el central a A0.
- Conecta el LED con su resistencia entre D9 y GND.
- Sube el sketch y gira el mando: el brillo sube y baja suave.
🧩 Resolución de problemas
| Síntoma | Causa | Solución |
|---|---|---|
| Brillo no cambia | LED en pin sin PWM | Usa 3/5/6/9/10/11 |
| Salta a tope de golpe | Extremos del pot invertidos | Da igual la dirección; revisa cursor en A0 |
| Parpadeo visible | delay demasiado largo | Reduce a 10 ms |
🚀 Para ir más lejos
- Aplica una curva gamma para que el brillo parezca lineal al ojo.
- Controla un servo (proyecto 18) con el mismo potenciómetro.