🔢 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?

Updated: