En este tutorial vamos a usar el registro de desplazamiento 74HC595 para controlar un display de segmentos. La idea es que el display muestre los números del 0 al 9 de forma secuencial.
Componentes necesarios
(1) x Elegoo ESP32
(1) x Protoboard de 400 puntos
(1) x Integrado 74HC595
(1) x Display de 7 segmentos de 1 dígito
(8) x Resistencias de 220 Ω
(26) x Cables puente Macho-Macho
Introducción a los componentes
El display de siete segmentos tiene un diagrama de pines específico para formar los números del 0 al 9. Fijate que la lógica de la tabla que sigue es para displays de cátodo común; si usás uno de ánodo común, tenés que invertir los valores: donde dice 1 va 0, y donde dice 0 va 1.
La conexión se hace vinculando los pines de salida (Q0 a Q7) del 74HC595 con los segmentos del display (A hasta G y el punto decimal DP).
Esquema de conexión
Paso 1: Conectar el 74HC595
Primero mandá la alimentación y tierra: VCC (pin 16) y MR (pin 10) van a 3.3V, mientras que GND (pin 8) y OE (pin 13) van a tierra. Después conectá los pines de control: DS (pin 14) al GPIO D5 del ESP32, ST_CP (pin 12, latch) al GPIO D18 y SH_CP (pin 11, clock) al GPIO D19.
Paso 2: Conectar el display de segmentos
Conectá los pines 3 y 8 del display al GND del ESP32 (asumiendo que es cátodo común). Siguiendo la tabla de correspondencia, uní las salidas Q0 ~ Q7 del 74HC595 a los pines del display correspondientes, intercalando siempre una resistencia de 220Ω en cada conexión para no quemar nada.
Código
Hacé clic en el enlace azul para bajarte el programa a tu compu. Antes de abrirlo, fijate que tengas bien instalado el Arduino IDE y el soporte para placas ESP32 con sus drivers. Si no sabés cómo hacer esto, podés mirar la sección "Parte 1" de la documentación para guiarte.
Una vez que cargues el código, el ESP32 va a gestionar el display a través del 74HC595, haciendo una cuenta regresiva del 9 al 0 con un retraso de 1 segundo entre cada número. Podés abrir el Serial Monitor para seguir el proceso (esto lo explicamos en detalle en el tutorial 4 de la segunda parte).
El código usa un array llamado seven_seg_digits[10] para guardar los patrones de bits. Cada byte representa qué segmentos se prenden (1) o se apagan (0). Por ejemplo, el patrón B11111100 para el 0 prende todos los segmentos menos el punto decimal.
En la función setup() definimos los pines de latch, clock y data como salidas. Después, la función sevenSegWrite se encarga de bajar el pin de latch, mandar los datos seriales con shiftOut y volver a subir el latch para que el número se visualice en el display.
Galería de referencia
Fuente: Adaptado al español desde el wiki oficial Elegoo (licencia CC BY-SA). Revisión técnica por equipo Breva.