Note
¡Hola, bienvenido a la Comunidad de Aficionados a Raspberry Pi, Arduino y ESP32 de SunFounder en Facebook! Profundiza en Raspberry Pi, Arduino y ESP32 con otros entusiastas.
¿Por qué unirse?
- Soporte de expertos: Resuelve problemas posventa y desafíos técnicos con ayuda de nuestra comunidad y equipo.
- Aprender y compartir: Intercambia consejos y tutoriales para mejorar tus habilidades.
- Vistas previas exclusivas: Obtén acceso anticipado a anuncios de nuevos productos y avances.
- Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.
- Promociones festivas y sorteos: Participa en sorteos y promociones de fiestas.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy!
¿Te sientes con suerte? ¿Quieres probar tu intuición y ver si puedes adivinar el número correcto? ¡Entonces no busques más allá del juego Adivina el Número!
Con este proyecto, puedes jugar un juego divertido y emocionante de azar.
Usando un control remoto IR, los jugadores ingresan números entre 0 y 99 para intentar adivinar el número de punto de suerte generado aleatoriamente. El sistema muestra el número de entrada del jugador en una pantalla LCD, junto con consejos de límite superior e inferior para ayudar a guiar al jugador hacia la respuesta correcta. Con cada adivinanza, los jugadores se acercan al número de punto de suerte, hasta que finalmente, alguien acierta y gana el juego.
Componentes Necesarios
Para este proyecto, necesitamos los siguientes componentes.
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
Nombre | ELEMENTOS EN ESTE KIT | ENLACE |
---|---|---|
Kit de Inicio ESP32 | 320+ | |link_esp32_starter_kit| |
También puedes comprarlos por separado en los enlaces a continuación.
Esquemático
Cableado
Código
Note
- Puedes abrir el archivo
6.7_guess_number.ino
bajo la ruta deesp32-starter-kit-main\c\codes\6.7_guess_number
directamente. - Las bibliotecas
LiquidCrystal_I2C
yIRremoteESP8266
se utilizan aquí, consulta :ref:`install_lib_man` para obtener un tutorial de instalación.
- Después de que el código se haya cargado con éxito, presiona cualquier botón numérico en el control remoto para iniciar el juego.
- Ingresa un número usando los botones numéricos en el control remoto. Para ingresar un solo dígito, necesitas presionar la tecla ciclo para confirmar.
- El sistema mostrará el número de entrada y los consejos de límite superior e inferior en la pantalla LCD.
- Sigue adivinando hasta que adivines correctamente el número de punto de suerte.
- Después de una adivinanza exitosa, el sistema mostrará un mensaje de éxito y generará un nuevo número de punto de suerte.
Note
Si el código y el cableado son correctos, pero la LCD aún no muestra ningún contenido, puedes ajustar el potenciómetro en la parte posterior para aumentar el contraste.
¿Cómo funciona?
En la función
setup()
, la pantalla LCD I2C y el receptor IR se inicializan. Luego llama a la funcióninitNewValue()
para generar un nuevo número de suerte aleatorio, y se muestra un mensaje de bienvenida en la pantalla LCD.void setup() { // Initialize the LCD screen lcd.init(); lcd.backlight(); // Start the serial communication Serial.begin(9600); // Enable the IR receiver irrecv.enableIRIn(); // Initialize a new lucky point value initNewValue(); }
En la función
loop
, el código espera una señal del receptor IR. Cuando se recibe una señal, la funcióndecodeKeyValue
se llama para decodificar la señal y obtener el valor del botón correspondiente.void loop() { // If a signal is received from the IR receiver if (irrecv.decode(&results)) { bool result = 0; String num = decodeKeyValue(results.value); // If the POWER button is pressed if (num == "POWER") { initNewValue(); // Initialize a new lucky point value } // If the CYCLE button is pressed else if (num == "CYCLE") { result = detectPoint(); // Detect the input number lcdShowInput(result); // Show the result on the LCD screen } // If a number button (0-9) is pressed, //add the digit to the input number //and detect the number if it is greater than or equal to 10 else if (num >= "0" && num <= "9") { count = count * 10; count += num.toInt(); if (count >= 10) { result = detectPoint(); } lcdShowInput(result); } irrecv.resume(); } }
- Dependiendo del valor del botón, se llama a la función apropiada. Si se presiona un botón numérico, la variable
count
se actualiza, y la funcióndetectPoint
se llama para detectar si el número de entrada es correcto. La funciónlcdShowInput
se llama para mostrar el número de entrada y los consejos de límite superior e inferior en la pantalla LCD. - Si se presiona el botón
POWER
, la funcióninitNewValue
se llama para generar un nuevo número de punto de suerte y mostrar el mensaje de bienvenida en la pantalla LCD. - Si se presiona el botón
CYCLE
, la funcióndetectPoint
se llama para detectar si el número de entrada es correcto. La funciónlcdShowInput
se llama para mostrar el número de entrada y los consejos de límite superior e inferior en la pantalla LCD.
- Dependiendo del valor del botón, se llama a la función apropiada. Si se presiona un botón numérico, la variable