Note
Hello, welcome to the SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community on Facebook! Dive deeper into Raspberry Pi, Arduino, and ESP32 with fellow enthusiasts.
Why Join?
Expert Support: Solve post-sale issues and technical challenges with help from our community and team.
Learn & Share: Exchange tips and tutorials to enhance your skills.
Exclusive Previews: Get early access to new product announcements and sneak peeks.
Special Discounts: Enjoy exclusive discounts on our newest products.
Festive Promotions and Giveaways: Take part in giveaways and holiday promotions.
👉 Ready to explore and create with us? Click [here] and join today!
GAME - Guess Number
Guessing Numbers is an entertaining party game where you and your friends take turns entering a number (0~99). The range becomes narrower with each number input until a player correctly guesses the answer. The player who guesses correctly is declared the loser and subjected to a penalty. For instance, if the secret number is 51, which the players cannot see, and player 1 inputs 50, the number range prompt changes to 50~99. If player 2 inputs 70, the number range becomes 50~70. If player 3 inputs 51, they are the unlucky one. In this game, we use an IR Remote Controller to input numbers and an LCD to display outcomes.
Required Components
In this project, we need the following components.
It’s definitely convenient to buy a whole kit, here’s the link:
Name |
ITEMS IN THIS KIT |
LINK |
---|---|---|
Elite Explorer Kit |
300+ |
You can also buy them separately from the links below.
COMPONENT INTRODUCTION |
PURCHASE LINK |
---|---|
- |
|
Wiring
Schematic
Code
Note
You can open the file
10_guess_number.ino
under the path ofelite-explorer-kit-main\fun_project\10_guess_number
directly.Or copy this code into Arduino IDE.
Note
To install the library, use the Arduino Library Manager and search for “IRremote” and “LiquidCrystal I2C” and install them.
How it works?
Library Imports and Global Variable Definitions:
Three libraries are imported:
Wire
for I2C communication,LiquidCrystal_I2C
for controlling the LCD display, andIRremote
for receiving signals from the infrared remote controller. Several global variables are defined to store the game’s state and settings.setup()
Initialize the LCD display and turn on the backlight. Initialize serial communication with a baud rate of 9600. Start the infrared receiver. Call the
initNewValue()
function to set the initial game state.loop()
Check if a signal is received from the infrared remote controller. Decode the received infrared signal. Update the game state or perform corresponding actions based on the decoded value (number or command).
initNewValue()
Use
analogRead
to initialize the random number seed, ensuring different random numbers are generated each time. Generate a random number between 0 and 98 as the lucky number (the number players need to guess). Reset upper and lower limit prompts. Display a welcome message on the LCD. Reset the input number.detectPoint()
Check the relationship between the player’s input number and the lucky number. If the input number is greater than the lucky number, update the upper limit prompt. If the input number is smaller than the lucky number, update the lower limit prompt. If the player inputs the correct number, reset the input and return true.
lcdShowInput()
Display the player’s input and the current upper and lower limit prompts on the LCD. If the player guesses correctly, display a success message and pause for 5 seconds before restarting the game.