Ir al contenido
← Volver a Formación Arduino Principiante

06. Barra de nivel con LEDs y potenciómetro

Cinco LEDs que se encienden en cascada según giras el mando, como un vúmetro. Refuerza arrays, bucles y mapeo de rangos.

Dificultad: Principiante · Tiempo: 40 min · Cerebro: Arduino Uno

🧰 Lista de materiales

Arduino Uno R3 (ATmega328P)
Arduino Uno R3 (ATmega328P)
Lógica de la barra
sin foto
Potenciómetro rotativo B5K (5 kΩ)
Control del nivel
LED 5 mm verde difuso
LED 5 mm verde difuso
LEDs de la barra (×3)
LED 5 mm amarillo difuso
LED 5 mm amarillo difuso
LED de la barra
LED 5 mm rojo difuso
LED 5 mm rojo difuso
LED de tope
sin foto
Resistencias película metálica 1/4 W
220 Ω ×5
Breadboard 830 puntos
Breadboard 830 puntos
Montaje

🎯 Qué vas a aprender

Manejar varios pines con elegancia usando un array y un bucle for, en lugar de repetir código. Es el patrón que escala a 8, 16 o 64 salidas.

📚 Teoría: arrays para no repetirte

Si tienes 5 LEDs, escribir digitalWrite cinco veces es tedioso y propenso a errores. Un array guarda los pines en una lista (int leds[] = {...}) y un bucle los recorre. Cambiar de 5 a 10 LEDs es entonces trivial.

La idea: mapeamos la lectura del potenciómetro (0–1023) al número de LEDs encendidos (0–5) y encendemos los primeros N.

🔌 Conexiones

LEDPinColor sugerido
1D2Verde
2D3Verde
3D4Verde
4D5Amarillo
5D6Rojo (tope)

Cada LED con su resistencia de 220 Ω a GND. Potenciómetro: extremos a GND/5 V, cursor a A0.

💻 Código completo

// Barra de nivel (VU) con 5 LEDs
const int leds[] = {2, 3, 4, 5, 6};
const int N = 5;
const int PIN_POT = A0;

void setup() {
  for (int i = 0; i < N; i++) pinMode(leds[i], OUTPUT);
}

void loop() {
  int lectura = analogRead(PIN_POT);
  int nivel = map(lectura, 0, 1023, 0, N);   // cuántos encender (0..5)

  for (int i = 0; i < N; i++) {
    digitalWrite(leds[i], i < nivel ? HIGH : LOW);
  }
  delay(20);
}

🛠️ Montaje paso a paso

  1. Coloca los 5 LEDs en fila con sus resistencias a GND.
  2. Cablea cada ánodo a D2–D6 en orden.
  3. Conecta el potenciómetro (cursor a A0).
  4. Sube el sketch y gira: los LEDs se encienden en cascada.

🧩 Resolución de problemas

SíntomaCausaSolución
Orden de encendido raroPines del array no coinciden con el cableadoAjusta el array al cableado real
Nunca llega al 5ºmap a 0..N-1Usa 0..N como en el código

🚀 Para ir más lejos

  • Alimenta la barra con la señal de un micrófono o LDR en vez del potenciómetro.
  • Sustituye los LEDs por la matriz 8×8 (proyecto 15) para una barra alta.
← Volver a Formación Arduino