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