6.7 Adivina el Número¶
¿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+ |
También puedes comprarlos por separado en los enlaces a continuación.
INTRODUCCIÓN DE COMPONENTES |
ENLACE DE COMPRA |
---|---|
- |
|
Esquemático
Cableado
Código
Nota
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 Instalación Manual 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.
Nota
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.