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.
🧰 Lista de materiales
🎯 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 74HC595 | Conexió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); }
}1 << 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
- Coloca el 74HC595 a caballo del canal central.
- Cablea alimentación: VCC y MR a 5 V; GND y OE a GND.
- Conecta DATA, CLOCK y LATCH a sus pines de Arduino.
- Conecta cada salida Q0–Q7 a un LED con su resistencia.
- Sube el sketch y disfruta del efecto.
🧩 Resolución de problemas
| Síntoma | Causa | Solución |
|---|---|---|
| LEDs apagados | OE no a GND o MR no a 5 V | Revisa pines de control |
| Orden invertido | MSBFIRST vs LSBFIRST | Cambia el modo en shiftOut |
| Parpadeo | Sin LATCH bien pulsado | Asegura 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.