Ir al contenido
← Volver a Formación Arduino Intermedio

16. Expansor de 8 LEDs con registro 74HC595

Controla 8 salidas usando solo 3 pines de Arduino. Aprende el registro de desplazamiento, base de la expansión de E/S.

Dificultad: Intermedio · Tiempo: 55 min · Cerebro: Arduino Uno

🧰 Lista de materiales

Arduino Uno R3 (ATmega328P)
Arduino Uno R3 (ATmega328P)
Envía los bits en serie
sin foto
SN74HC595N (registro desplazamiento)
Convierte serie en 8 salidas paralelas
LED 5 mm verde difuso
LED 5 mm verde difuso
Salidas indicadoras (×8 surtido)
LED 5 mm rojo difuso
LED 5 mm rojo difuso
Salidas indicadoras
sin foto
Resistencias película metálica 1/4 W
220 Ω ×8
Breadboard 830 puntos
Breadboard 830 puntos
Montaje

🎯 Qué vas a aprender

Una técnica fundamental: el registro de desplazamiento. Con 3 pines controlas 8 salidas (y encadenando, 16, 24...). Entenderás cómo se «empujan» bits en serie y se vuelcan en paralelo.

📚 Teoría: el registro de desplazamiento

El 74HC595 recibe los bits uno a uno por DATA al ritmo de CLOCK (entran en fila, empujándose). Cuando ya están los 8, un pulso en LATCH los vuelca simultáneamente a las 8 salidas. Es como llenar una fila de fichas y luego mostrarlas todas a la vez.

En Arduino esto lo hace la función shiftOut() de una sola línea: tú le pasas un byte y ella mueve DATA y CLOCK por ti.

🔌 Conexiones

Pin 74HC595Conexión
DS (14)D11 (DATA)
SHCP (11)D12 (CLOCK)
STCP (12)D8 (LATCH)
OE (13)GND
MR (10)5 V
VCC (16)5 V
GND (8)GND
Q0–Q7 (15,1–7)8 LEDs vía 220 Ω → GND

💻 Código completo

// 8 LEDs con 74HC595: efecto coche fantástico (Knight Rider)
const int DATA  = 11;
const int CLOCK = 12;
const int LATCH = 8;

void escribir(byte valor) {
  digitalWrite(LATCH, LOW);
  shiftOut(DATA, CLOCK, MSBFIRST, valor);
  digitalWrite(LATCH, HIGH);
}

void setup() {
  pinMode(DATA, OUTPUT);
  pinMode(CLOCK, OUTPUT);
  pinMode(LATCH, OUTPUT);
}

void loop() {
  // ida: un LED recorre de Q0 a Q7
  for (int i = 0; i < 8; i++) { escribir(1 << i); delay(80); }
  // vuelta
  for (int i = 6; i > 0; i--) { escribir(1 << i); delay(80); }
}
💡 Consejo1 << i crea un byte con un solo bit a 1 en la posición i. Cambiar el patrón es tan fácil como pasar otro número (p. ej. 0b10101010).

🛠️ Montaje paso a paso

  1. Coloca el 74HC595 a caballo del canal central.
  2. Cablea alimentación: VCC y MR a 5 V; GND y OE a GND.
  3. Conecta DATA, CLOCK y LATCH a sus pines de Arduino.
  4. Conecta cada salida Q0–Q7 a un LED con su resistencia.
  5. Sube el sketch y disfruta del efecto.

🧩 Resolución de problemas

SíntomaCausaSolución
LEDs apagadosOE no a GND o MR no a 5 VRevisa pines de control
Orden invertidoMSBFIRST vs LSBFIRSTCambia el modo en shiftOut
ParpadeoSin LATCH bien pulsadoAsegura LOW→datos→HIGH

🚀 Para ir más lejos

  • Encadena un segundo 74HC595 conectando Q7' al DS del siguiente para 16 salidas.
  • Controla un display de 7 segmentos con un solo registro.
← Volver a Formación Arduino