Tutorial ESP32 33/55 - Dados digitales utilizando el kit de aprendizaje IoT ESP32 de SunFounder

Tutorial ESP32 33/55 - Dados digitales utilizando el kit de aprendizaje IoT ESP32 de SunFounder

En este tutorial, crearemos un dado digital utilizando una pantalla de siete segmentos y el ESP32 del kit de aprendizaje IoT de SunFounder. El proyecto te permitirá lanzar un dado virtual, generando números del 1 al 6 al presionar un botón. Esta es una forma fantástica de explorar las capacidades del ESP32 mientras aprendes sobre la interfaz con pantallas y botones. Para mayor claridad, asegúrate de revisar el video (en el video a las 0:00).

ESP32-33_dados-digitales-principal

Hardware Explicado

Los componentes principales de este proyecto incluyen el microcontrolador ESP32, un registro de desplazamiento 74HC595, una pantalla de siete segmentos y un botón pulsador. El ESP32 es un microcontrolador potente que integra Wi-Fi y Bluetooth, lo que lo hace adecuado para aplicaciones de IoT. El registro de desplazamiento 74HC595 nos permite controlar la pantalla de siete segmentos utilizando menos pines que conectando directamente cada segmento.

El display de siete segmentos muestra números y se controla enviando datos desde el registro de desplazamiento. El botón pulsador se utiliza para activar la tirada de dados, generando un número aleatorio que se mostrará. Cuando se presiona, el botón se conecta al pin 13 en el ESP32, que tiene una resistencia pull-up interna para mantenerlo en un estado alto cuando no está presionado.

Detalles de la hoja de datos

Fabricante Texas Instruments
Número de pieza 74HC595
Voltaje de lógica/entrada y salida 2 V a 6 V
Tensión de alimentación 4.5 V a 5.5 V
Corriente de salida (por canal) 6 mA máx
Corriente de pico (por canal) 35 mA máx
Orientación sobre la frecuencia PWM No aplicable
Umbrales de lógica de entrada VIH≥ 2 V, VIL≤ 0.8 V
Caída de tensión / RDS(on)saturación 0.5 V máx
Límites térmicos 150 °C
Paquete DIP-16
Notas / variantes Comúnmente utilizado en pantallas digitales

  • Asegúrese de los niveles de voltaje adecuados (4.5 V a 5.5 V) para un funcionamiento confiable.
  • Limite la corriente de salida para evitar dañar el registro de desplazamiento.
  • Utiliza capacitores de desacoplamiento cerca de los pines de alimentación para estabilizar el voltaje.
  • Conecta correctamente el display de siete segmentos para evitar la mala representación de los números.
  • Verifique el cableado en busca de conexiones sueltas que puedan provocar un comportamiento inesperado.

Instrucciones de cableado

ESP32-33_digital-dice-wiring

Para cablear los dados digitales, comienza configurando las conexiones de energía. Conecta la tierra (línea azul) en tu placa de pruebas al pin de tierra en el ESP32 y asegúrate de que todos los puntos de tierra estén interconectados. A continuación, conecta un pin de 3.3V del ESP32 a la pista de energía (línea roja) en la placa de pruebas.

ESP32-33_esquema-de-dados-digitales

Para el registro de desplazamiento 74HC595, asegúrate de que el pin 1 esté conectado al riel de 3.3V y el pin 8 a tierra. Conecta el pin de salida de datos (DS) al pin 25 del ESP32, el pin de reloj de desplazamiento (SHCP) al pin 26, y el pin de reloj de almacenamiento (STCP) al pin 27. El botón de presión debe estar conectado entre el pin 13 del ESP32 y tierra, permitiendo que baje el pin cuando se presiona.

Ejemplos de código y guía paso a paso

En el código, primero definimos los pines utilizados para el registro de desplazamiento y el botón. El pin del botón se define comobuttonPiny está conectado al pin 13 en el ESP32. El array de datosdatArraycontiene las representaciones binarias de los números 0-9 para el display de siete segmentos.


const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP 
const int DS = 25; //DS 
const int buttonPin = 13;
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

En elsetup()función, configuramos el pin del botón en modo de entrada y los pines del registro de desplazamiento en modo de salida. Esto prepara los pines para leer la entrada del botón y para enviar datos a la pantalla.


void setup ()
{
  pinMode(buttonPin,INPUT); 
  pinMode(STcp,OUTPUT);
  pinMode(SHcp,OUTPUT);
  pinMode(DS,OUTPUT);
}

La lógica principal del programa se encuentra en elloop()función. Verifica si se presiona el botón, genera un número aleatorio y llama a lashow_number()función para mostrar el número en el display de siete segmentos.


void loop()
{
  if(digitalRead(buttonPin) == LOW)
  {
    int diceNumber = random(1, 7);
    show_number(diceNumber);
    delay(50);
  }
}

Elshow_number()la función envía el valor apropiado del array de datos al registro de desplazamiento, que luego controla los segmentos de la pantalla para mostrar el número generado. Esta función es crucial para la retroalimentación visual cuando se presiona el botón.

Display LED 74HC595: Explicación del Segmento Siete
Pantalla LED 74HC595: Siete segmentos explicados

Demostración / Qué Esperar

Cuando la configuración esté completa y el código esté cargado, presionar el botón generará un número aleatorio entre 1 y 6, que se mostrará en la pantalla de siete segmentos. Si todo está conectado correctamente, la pantalla debería mostrar un número cada vez que se presione el botón. Ten cuidado con las entradas flotantes; asegúrate de que el botón esté correctamente conectado a tierra para evitar un comportamiento errático (en el video a las 1:30).

Marcas de tiempo del video

  • 00:00 Comienzo
  • 1:48 Introducción al proyecto
  • 3:40 Explicación del cableado para dados digitales
  • Código Arduino para dados digitales explicado
  • 19:19 Seleccionando la placa ESP32 y el puerto COM en el Arduino IDE
  • 21:00 Demostración de Dados Digitales
  • 22:15 Corrigiendo el código de Arduino

Imágenes

74HC595 Pantalla LED: Explicación de siete segmentos
74HC595 Pantalla LED: Explicación de siete segmentos
ESP32-33_digital-dice-wiring
ESP32-33_digital-dice-wiring
ESP32-33_digital-dice-main
ESP32-33_digital-dice-main
ESP32-33_digital-dice-schematic
ESP32-33_digital-dice-schematic
834-ESP32 Tutorial 33/55- Arduino code for digital dice
Idioma: C++
¡Copiado!

Recursos y referencias

Archivos📁

No hay archivos disponibles.