Tutorial ESP32 36/55 - Juego de Adivinanza de Números | Kit de Aprendizaje IoT ESP32 de SunFounder

Tutorial ESP32 36/55 - Juego de Adivinanza de Números | Kit de Aprendizaje IoT ESP32 de SunFounder

En este tutorial, crearemos un divertido juego de adivinar el número utilizando el microcontrolador ESP32 junto con un control remoto por infrarrojos y una pantalla LCD. El jugador intentará adivinar un número generado aleatoriamente entre 0 y 99, y el juego proporcionará pistas sobre si la adivinanza es demasiado alta o demasiado baja. A través de este proyecto, aprenderás a utilizar el receptor infrarrojo, mostrar valores en una LCD y gestionar la entrada del usuario desde un control remoto. Puedes consultar el video para mayor claridad (en el video a las 00:00).

ESP32_36_adivinando_numero-1
ESP32_36_guessing_numbe-2

Hardware Explicado

Los componentes principales utilizados en este proyecto incluyen el microcontrolador ESP32, un control remoto infrarrojo, un receptor infrarrojo y una pantalla LCD. El ESP32 actúa como la unidad de procesamiento principal y es capaz de manejar la comunicación inalámbrica, lo que lo convierte en una opción versátil para proyectos de IoT. El control remoto infrarrojo permite a los usuarios introducir conjeturas sin requerir interacción física con la placa, mientras que la LCD muestra el estado del juego y las indicaciones.

El receptor infrarrojo detecta señales del control remoto y las decodifica para su uso en el juego. Cada pulsación de botón en el control remoto corresponde a un valor específico que el ESP32 puede interpretar. La pantalla LCD proporciona una interfaz visual para el usuario, mostrando el rango de suposiciones actual y si la suposición fue correcta.

Detalles de la hoja de datos

Fabricante SunFounder
Número de pieza ESP32
Tensión de lógica/entrada/salida 3.3 V
Tensión de alimentación 5 V (a través de USB)
Corriente de salida (por canal) 12 mA (máx)
Guía de frecuencia PWM 1 kHz
Umbrales de lógica de entrada 0.3 * Vcc a 0.7 * Vcc
Caída de voltaje / RDS(on)/ saturación 0.2 V
Límites térmicos Temperatura de operación: -40 a 85 °C
Paquete Módulo WROOM-32
Notas / variantes Soporta Wi-Fi y Bluetooth

  • Asegúrese de que todos los componentes estén calificados para 3.3 V y 5 V cuando sea aplicable.
  • Utilice resistencias pull-up adecuadas para el receptor IR para evitar entradas flotantes.
  • Considere usar un disipador de calor si funciona a la corriente máxima de salida durante períodos prolongados.
  • Al usar PWM, mantenga una frecuencia de alrededor de 1 kHz para un rendimiento óptimo.
  • Ten cuidado con el cableado; asegúrate de que las conexiones estén seguras para evitar fallos intermitentes.

Instrucciones de cableado

ESP32_36_guessing_number_wiring

Para configurar el cableado del juego de adivinanza de números, comienza conectando el receptor infrarrojo. Conecta el cable rojo del pin derecho del receptor a la fuente de alimentación de 3.3 V en el ESP32. El cable negro debe ir a tierra, mientras que el pin izquierdo del receptor infrarrojo se conecta al pin.14en el ESP32.

ESP32_36_adivinando_número_esquema

A continuación, cablee la pantalla LCD. Conecte el pin VCC de la LCD a la fuente de 5 V en el ESP32 y el pin de tierra a tierra. Los pines SDA y SCL de la LCD deben conectarse a los pines.21y22respectivamente. Asegúrese de que haya dos espacios vacíos entre las conexiones SDA y SCL para evitar conflictos de pines. Finalmente, asegúrese de quitar cualquier cubierta de plástico de la batería antes de encender la placa.

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

Los siguientes fragmentos de código ilustran partes esenciales del programa utilizado para el juego de adivinar un número. Comenzamos incluyendo las bibliotecas necesarias y definiendo identificadores clave.

#include 
#include 
#include 
#include 

const uint16_t IR_RECEIVE_PIN = 14;
IRrecv irrecv(IR_RECEIVE_PIN);
decode_results results;

En este extracto, incluimos bibliotecas para manejar la funcionalidad de la LCD y el receptor de infrarrojos. El pin para el receptor infrarrojo se define como14, y creamos instancias de los objetos necesarios para gestionar la entrada y la salida.

void setup() {
  lcd.init();
  lcd.backlight();
  Serial.begin(9600);
  irrecv.enableIRIn();
  initNewValue();
}

Este fragmento muestra la función de configuración donde inicializamos el LCD, comenzamos la comunicación serial y habilitamos el receptor IR. La funcióninitNewValue()se llama a generar un nuevo número aleatorio para que el jugador adivine.

bool detectPoint() {
  if (count > pointValue) {
    if (count < upper) upper = count;
  } else if (count < pointValue) {
    if (count > lower) lower = count;
  } else if (count == pointValue) {
    count = 0;
    return 1;
  }
  count = 0;
  return 0;
}

Esta función comprueba la suposición del jugador en comparación con el número generado aleatoriamente, ajustando los límites superiores e inferiores en consecuencia. Si la suposición es correcta, reinicia el contador y devuelve verdadero.

El código completo se carga debajo del artículo para su referencia.

Demostración / Qué Esperar

Una vez que todo esté conectado y el código esté subido, el juego te pedirá que presiones cualquier número en el control remoto. Luego, el juego proporcionará retroalimentación sobre tus conjeturas, actualizando el rango de números posibles hasta que adivines correctamente el número objetivo. Si presionas el botón de POWER, el juego se reinicia y comienza de nuevo (en el video a las 02:30).

Las trampas comunes incluyen asegurarse de que el receptor de infrarrojos esté correctamente orientado y que todas las conexiones sean seguras. Si el juego no responde, verifica la fuente de alimentación y asegúrate de que la placa y el puerto correctos estén seleccionados en el IDE de Arduino.

Marcas de tiempo del video

  • 00:00 Comenzar
  • 2:17 Introducción al proyecto del juego
  • 4:37 Cableado
  • 6:15 Código de Arduino explicado
  • 12:32 Seleccionando la placa ESP32 y el puerto COM en Arduino IDE
  • 16:16 Jugando al juego de adivinar el número

Imágenes

ESP32_36_guessing_number_schematic
ESP32_36_guessing_number_schematic
ESP32_36_guessing_number_wiring
ESP32_36_guessing_number_wiring
ESP32_36_guessing_numbe-1
ESP32_36_guessing_numbe-1
ESP32_36_guessing_numbe-2
ESP32_36_guessing_numbe-2
837-ESP32 Tutorial 36/55- Arduino code for guessing number
Idioma: C++
¡Copiado!

Recursos y referencias

Archivos📁

No hay archivos disponibles.