P06 - Control de múltiples LEDs con 74HC595 y Arduino
🔢 P06 - Control de múltiples LEDs con 74HC595
ℹ️ Empieza aquí:
Hasta ahora has controlado LEDs conectándolos directamente a pines de Arduino.
En esta práctica aprenderás a usar el 74HC595, un registro de desplazamiento que permite controlar hasta 8 salidas digitales usando solo 3 pines del microcontrolador.
Este tipo de técnica es fundamental cuando el número de pines disponibles es limitado y se utiliza ampliamente en sistemas reales.
🚀 Objetivos
• Comprender el funcionamiento básico del registro 74HC595.
• Controlar múltiples LEDs usando solo tres pines de Arduino.
• Enviar datos en paralelo mediante comunicación serie síncrona.
• Representar patrones binarios mediante LEDs.
• Introducir el concepto de expansión de salidas digitales.
🧩 Contenidos trabajados
• Registro de desplazamiento 74HC595.
• Uso de shiftOut() en Arduino.
• Representación binaria de datos.
• Control eficiente de salidas digitales.
• Arquitectura de sistemas con expansión de E/S.
💻 Materiales y recursos
• Arduino UNO.
• Protoboard.
• 1 circuito integrado 74HC595.
• 8 LEDs.
• 8 resistencias (220 Ω – 330 Ω).
• Cables Dupont.
• Ordenador con Arduino IDE.
🔧 Montaje práctico
Conexión del 74HC595
1. Coloca el 74HC595 en la protoboard.
2. Realiza las siguientes conexiones:
- Pin 16 (VCC) → 5V
- Pin 8 (GND) → GND
- Pin 10 (MR) → 5V
- Pin 13 (OE) → GND
3. Conecta los pines de control:
- Pin 14 (DS) → pin 11 de Arduino
- Pin 12 (ST_CP) → pin 10 de Arduino
- Pin 11 (SH_CP) → pin 9 de Arduino
4. Conecta las salidas Q0–Q7 (pines 15, 1–7) a los LEDs mediante resistencias y luego a GND.
🧭 Desarrollo de la práctica
Paso 1: Crear el proyecto
1. Abrir Arduino IDE.
2. Archivo → Nuevo.
3. Guardar como: P06_74HC595_LEDs_ApellidoNombre
Paso 2: Definir pines y variables
Antes de setup():
int dataPin = 11;
int latchPin = 10;
int clockPin = 9;
byte patron = 0;
Paso 3: Configurar pines en setup()
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
Paso 4: Enviar datos al 74HC595
void loop() {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, patron);
digitalWrite(latchPin, HIGH);
patron++;
delay(300);
}
✅ Comprobación de funcionamiento
- Los LEDs deben encenderse siguiendo un patrón binario creciente.
- Cada incremento del valor produce una combinación distinta de LEDs encendidos.
- Arduino utiliza solo tres pines para controlar ocho salidas.
📦 Entrega
• Archivo .ino comentado y funcional.
• Fotografía del montaje con el 74HC595 y los LEDs encendidos.
• Explicación breve del funcionamiento del registro de desplazamiento.
📊 Rúbrica de evaluación
| Criterio | Excelente (9–10) | Adecuado (6–8) | Insuficiente (≤5) |
|---|---|---|---|
| Montaje del 74HC595 | Correcto, limpio y funcional | Funciona parcialmente | Incorrecto |
| Control de LEDs | Todos los LEDs responden correctamente | Algunos fallos | No funciona |
| Uso de shiftOut | Implementación correcta | Parcialmente correcta | Incorrecta |
| Comprensión binaria | Explicación clara y correcta | Explicación parcial | No comprende |
| Código | Claro, ordenado y comentado | Funcional pero mejorable | Confuso |
🎯 Para pensar (opcional)
¿Cómo podrías modificar el programa para mostrar patrones específicos (por ejemplo, luces tipo “barra” o efectos de desplazamiento) usando el mismo hardware?