En esta lección, vas a aprender cómo usar ocho LEDs rojos grandes con un ESP32 sin tener que sacrificar ocho pines de salida. Vamos a usar un chip llamado 74HC595 para que no te quedes sin conexiones para tus otros sensores o botones.
Resumen
Aunque podrías conectar cada LED con su resistencia directamente a un pin del ESP32, te quedarías sin pines libres enseguida. Si no tenés muchas cosas conectadas, está todo bien, pero lo normal es que quieras usar botones, sensores o servos, y cuando te quieras dar cuenta, ya no te queda espacio. Por eso, en lugar de hacer eso, vas a usar un conversor de serie a paralelo. Este chip tiene ocho salidas y tres entradas que usás para mandarle la información de a un bit por vez. Esto hace que sea un toque más lento (unas 500.000 veces por segundo en lugar de 8.000.000), pero sigue siendo mucho más rápido de lo que el ojo humano puede detectar, así que vale la pena el cambio.
Componentes necesarios
(1) x Elegoo ESP32
(2) x Protoboard de 400 puntos
(8) x LED
(8) x Resistencias de 220 ohm
(1) x IC 74HC595
(16) x Cables jumper M-M
Introducción a los componentes
El registro de desplazamiento 74HC595 es un chip que guarda lo que podemos imaginar como ocho posiciones de memoria, donde cada una puede ser un 1 o un 0. Para setear estos valores, le pasamos los datos usando los pines "Data" y "Clock". El pin de clock tiene que recibir ocho pulsos: en cada pulso, si el pin de data está en alto, se carga un 1; de lo contrario, un 0. Cuando se reciben los ocho pulsos, el pin "Latch" copia esos valores al registro de salida. Esto es necesario para que los LEDs no parpadeen mientras se están cargando los datos. El chip también tiene un pin de habilitación de salida (OE) que sirve para prender o apagar todo junto; como es activo en bajo, lo mandamos directo a GND.
Esquema de conexión y diagrama de cableado
Como hay ocho LEDs y ocho resistencias, fijate bien en las conexiones. Lo más simple es poner primero el chip 74HC595 con la muesca en forma de U hacia la parte superior de la protoboard. El pin 1 está a la izquierda de esa muesca. Conectá el GPIO 5 del ESP32 al pin 14 del chip, el GPIO 19 al pin 12 y el GPIO 18 al pin 11. Casi todas las salidas del integrado están del lado izquierdo, así que poné los LEDs ahí para que sea más fácil cablear. Acordate que la pata larga (positiva) del LED siempre tiene que ir hacia el chip.
Tené cuidado de que las patas de las resistencias no se toquen entre sí. Si ves que se complica acomodarlas, podés cortarlas un poco para que queden más cerca de la superficie de la protoboard. No te olvides de conectar el pin 8 del chip a la columna de GND. Una vez que tengas todo, cargá el código y vas a ver cómo los LEDs se prenden uno por uno hasta que están todos encendidos, se apagan y el ciclo vuelve a empezar.
Código
Podés descargar el archivo del programa y abrirlo con el Arduino IDE. Antes de darle a "upload", fijate que tengas instalado el soporte para placas ESP32 y el driver correspondiente. Si tenés alguna duda con este proceso, pegale una leída a la "Parte 1" de la documentación para guiarte mejor.
Configuración de variables:
tDelay = 100: Define el tiempo de espera en milisegundos.
latchPin = 19: GPIO conectado al pin ST_CP (RCK) del 74HC595.
clockPin = 18: GPIO conectado al pin SH_CP (SCK) del 74HC595.
dataPin = 5: GPIO conectado al pin DS (S1) del 74HC595.
Fuente: Adaptado al español desde el wiki oficial Elegoo (licencia CC BY-SA). Revisión técnica por equipo Breva.