Tutorial ESP32 10/55 - Contador digital usando Display de Siete Segmentos 74HC595 - Kit de Aprendizaje IoT ESP32
En este tutorial, crearemos un contador digital utilizando una pantalla de siete segmentos controlada por el microcontrolador ESP32. El contador incrementará de 0 a 9 y luego decrecerá de nuevo a 0, proporcionando una visualización clara del proceso de conteo. También exploraremos cómo encender segmentos individuales y mostrar letras en la pantalla de siete segmentos.

Este proyecto utiliza un registro de desplazamiento 74HC595 para controlar la pantalla, lo que nos permite gestionar eficientemente los segmentos sin usar demasiados pines GPIO en el ESP32. Al enviar valores binarios al registro de desplazamiento, podemos iluminar los segmentos correspondientes para representar números y letras. Para una comprensión más profunda del proceso, puedes consultar el video (en el video a las 03:15).
Hardware Explicado
Los componentes principales de este proyecto incluyen el microcontrolador ESP32, un registro de desplazamiento 74HC595 y una pantalla de siete segmentos. El ESP32 es un microcontrolador potente con capacidades integradas de Wi-Fi y Bluetooth, lo que lo hace adecuado para proyectos de IoT. El 74HC595 es un registro de desplazamiento que nos permite controlar múltiples salidas utilizando solo unos pocos pines de entrada. Funciona tomando datos en serie y convirtiéndolos en salida paralela, lo cual es perfecto para controlar una pantalla de siete segmentos.
El display de siete segmentos consiste en siete LEDs individuales dispuestos en un patrón de figura ocho. Cada segmento se puede encender o apagar enviando el valor binario apropiado al registro de desplazamiento. Por ejemplo, para mostrar el número 0, todos los segmentos excepto el del medio (G) deben estar iluminados.
Detalles de la hoja de datos
| Fabricante | Texas Instruments |
|---|---|
| Número de parte | 74HC595 |
| Voltaje de lógica/IO | 2 V a 6 V |
| Tensión de alimentación | 2 V a 6 V |
| corriente de salida (por canal) | 6 mA |
| Corriente de pico (por canal) | 35 mA |
| Orientación sobre la frecuencia PWM | Hasta 1 kHz |
| Umbrales de lógica de entrada | 0.3 VCCa 0.7 VCC |
| Caída de tensión / RDS(on)/ saturación | 0,2 V máx |
| Límites térmicos | 125 °C |
| Paquete | DIP-16 |
| Notas / variantes | Disponible en varios paquetes |
- Asegúrese de un suministro de voltaje adecuado (2 V a 6 V).
- Limitar la corriente de salida para evitar el sobrecalentamiento.
- Utiliza resistencias separadas para cada segmento para un brillo óptimo.
- Ten cuidado con el cableado para evitar cortocircuitos y conexiones incorrectas.
- Sigue el pinout cuidadosamente para evitar malconfiguración.
Instrucciones de cableado

Comienza configurando tu protoboard. Conecta la línea de tierra (línea azul) y la línea de alimentación (línea roja). La tierra debe conectarse a la línea azul en un lado del protoboard, mientras que la alimentación debe conectarse a la línea roja en el lado opuesto. Usa un cable negro para conectar la tierra del ESP32 a la línea de tierra y un cable rojo para conectar el pin de 3.3V del ESP32 a la línea de alimentación.
A continuación, inserte el registro de desplazamiento 74HC595 en la placa de pruebas, asegurándose de que la muesca esté orientada correctamente. Conecte el pin 11 (DS) al pin 25 del ESP32, el pin 12 (SH_CP) al pin 26 y el pin 14 (ST_CP) al pin 27. Conecte el suelo (pin 8) del registro de desplazamiento a la línea de tierra y el pin 10 (MR) a la línea de alimentación para activar.
Para el display de siete segmentos, conecta los pines correspondientes a los segmentos (a-g) a los pines de salida del registro de desplazamiento. Usa una resistencia (220 ohmios) en serie para cada segmento para limitar la corriente. Asegúrate de tener conexiones adecuadas para el pin común, que puede ser unánodo o cátodo, según el tipo de display.
Ejemplos de Código y Tutorial
En la función de configuración, comenzamos definiendo los pines conectados al registro de desplazamiento como salidas. Esto asegura que nuestro ESP32 pueda controlar los datos que se envían a la pantalla.
void setup ()
{
//set pins to output
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
Aquí, definimosSTcp,SHcp, yDScomo los pines conectados a ST_CP, SH_CP y DS del registro de desplazamiento, respectivamente. Configurar estos pines como salidas nos permite controlar el registro de desplazamiento.
El bucle principal del programa cuenta de 0 a 9, enviando los valores correspondientes a la pantalla utilizando elshiftOutfunción.
for(int num = 0; num <10; num++)
{
digitalWrite(STcp,LOW); //ground ST_CP and hold low for as long as you are transmitting
shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
digitalWrite(STcp,HIGH); //pull the ST_CPST_CP to save the data
delay(1000);
}
Este bucle incrementa elnumvariable, enviando el valor correspondiente de ladatArraya la pantalla cada segundo. ElshiftOutla función transmite los datos al registro de desplazamiento, que luego enciende los segmentos apropiados.
Demostración / Qué Esperar
Una vez que el cableado esté completo y el código esté cargado, deberías ver el display de siete segmentos contando de 0 a 9, haciendo una breve pausa antes de contar de regreso a 0. Cada número se mostrará durante un segundo. Si deseas acelerar el conteo, puedes ajustar la demora en el bucle (en el video a las 15:30).
Al manipular los segmentos de forma individual, recuerda enviar los valores binarios correctos para mostrar letras o segmentos específicos. Si la pantalla parece tenue, considera añadir resistencias individuales para cada segmento para asegurar un brillo constante en toda la pantalla.
Marcas de tiempo del video
- 00:00 Comienzo
- 1:53 Introducción a los siete segmentos
- 4:38 Explicación del cableado
- 13:15 Código de Arduino-1
- 17:01 Seleccionando el puerto COM y la placa ESP32
- 18:43 Demostración-1
- 20:13 Mostrando un solo dígito
- 21:38 Contador ascendente y descendente
- 23:07 Activando y desactivando cada segmento
- 24:53 Mostrando A, B, C, D, E y F
const int STcp = 27; // ST_CP
const int SHcp = 26; // SH_CP
const int DS = 25; // DS
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void setup ()
{
// establecer pines como salida
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
void loop()
{
for(int num = 0; num <10; num++)
{
digitalWrite(STcp,LOW); // conecte ST_CP a tierra y mantenga bajo durante el tiempo que esté transmitiendo
shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
digitalWrite(STcp,HIGH); // tire el ST_CPST_CP para guardar los datos
delay(1000);
}
}
Common Course Links
Common Course Files
Recursos y referencias
-
DocumentaciónTutorial ESP32 10/55 - Página de SunFounder para Siete Segmentosdocs.sunfounder.com
Archivos📁
No hay archivos disponibles.