El 74HC595 es un registro de desplazamiento de 8 bits que permite ampliar la cantidad de salidas digitales de tu Arduino. Al conectar este chip a tu placa, puedes controlar 8 salidas independientes (como LEDs, relés o displays) utilizando únicamente 3 pines de tu Arduino.
Simulación del circuito
Revisa el funcionamiento con la simulacion creada en distintas platformas
Wokwi
Tinkercad
¿Qué es el 74HC595?
El 74HC595 es un registro de desplazamiento (Shift Register) con salida serie y salida paralela. https://codigoelectronica.com/blog/74hc595
Su objetivo principal es permitir controlar múltiples salidas digitales usando solamente 3 pines del Arduino.
Ejemplo:
Sin 74HC595:
- 8 LEDs → necesitas 8 pines del Arduino.
Con 74HC595:
- 8 LEDs → solo necesitas 3 pines.
Esto es muy útil cuando trabajas con:
- Muchos LEDs
- Pantallas LED
- Matrices
- Displays de 7 segmentos
- Relés
- Automatización
Conocimientos que debes tener antes de montar el circuito
Entender el registro de desplazamiento
Cada nuevo bit empuja al anterior.
Inicial:
00000000
Llega 1:
00000001
Llega 0:
00000010
Llega 1:
00000101
Función shiftOut
La función shiftOut() sirve para enviar datos bit a bit (serialmente) desde el Arduino hacia otro dispositivo usando solo dos pines de control (datos y reloj).
¿Qué hace internamente?
Supongamos que quieres enviar el número: 13
En binario: 00001101
shiftOut() envía esos bits uno por uno: 0 → 0 → 0 → 0 → 1 → 1 → 0 → 1
Mientras envía cada bit:
- Coloca el valor en el pin de datos.
- Genera un pulso en el pin reloj.
- El dispositivo receptor guarda ese bit.
Sintaxis
shiftOut(dataPin, clockPin, bitOrder, value);
- dataPin: Pin que enviará los datos
- clockPin: Pin que marca el ritmo de envío
- bitOrder: Orden de envío (MSBFIRST o LSBFIRST)
- MSBFIRST (Most Significant Bit First) Empieza por el bit más significativo.
- 13 = 00001101 Envía 0 0 0 0 1 1 0 1
- LSBFIRST (Least Significant Bit First) Empieza por el bit menos significativo.
- 13 = 00001101 Envía 1 0 1 1 0 0 0 0
- MSBFIRST (Most Significant Bit First) Empieza por el bit más significativo.
- value: Valor que quieres enviar
Componentes necesarios
- 1 x Arduino UNO (o Nano)
- 1 x integrado 74HC595
- 8 x LEDs
- 8 x resistencias de 220Ω
- 1 x Protoboard
- 15 x Cables Dupont
- 1 x Cable USB
Entendiendo los pines del 74HC595
Pines importantes
DS (14)
Entrada de datos.
SH_CP (11)
Reloj del desplazamiento.
ST_CP (12)
Actualiza las salidas.
OE (13)
Debe ir a GND para habilitar salidas.
MR (10)
Debe ir a 5V para evitar reinicio.
QA–QH
Salidas hacia LEDs.
Conexión del circuito
Conecta cada salida QA–QH → Resistencia 220Ω → LED → GND.
Código explicado paso a paso
//Pin connected to ST_CP of 74HC595
int latchPin = 8;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595
int dataPin = 11;
void setup() {
//set pins to output because they are addressed in the main loop
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
//count up routine
for (int j = 0; j < 256; j++) {
//ground latchPin and hold low for as long as you are transmitting
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, j);
//return the latch pin high to signal chip that it
//no longer needs to listen for information
digitalWrite(latchPin, HIGH);
delay(1000);
}
}
Explicación del código
Definimos los pines:
int dataPin = 8;
Envía los bits.
int latchPin = 12;
Actualiza las salidas.
int clockPin = 11;
Marca el ritmo de envío.
Antes de enviar:
digitalWrite(latchPin, LOW);
Se bloquean las salidas.
Enviar información:
shiftOut(
dataPin,
clockPin,
MSBFIRST,
B10101010
);
Parámetros:
- dataPin → datos
- clockPin → reloj
- MSBFIRST → empieza por el bit izquierdo
- B10101010 → patrón
Aplicar cambios:
digitalWrite(latchPin, HIGH);
Ahora los LEDs cambian al mismo tiempo.
Cómo pensar el patrón de LEDs
B11111111
Todos encendidos.
B00000000
Todos apagados.
B10000001
Solo extremos.
B01010101
Alternados.
Errores comunes
- No conectar OE a GND
- Olvidar MR a 5V
- No usar resistencias
- Invertir LEDs
- Confundir SH_CP con ST_CP
- Enviar datos sin activar LATCH