#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
int Pin10 = 10;
int Pin11 = 11;
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x27, 20, 4);
int randomNumber;
String userInput = "";
void setup()
{
lcd.init();
lcd.backlight();
pinMode(Pin10, OUTPUT);
pinMode(Pin11, OUTPUT);
randomSeed(analogRead(A0));
randomNumber = random(1, 51);
lcd.print("Guess number 1-50");
delay(2000);
lcd.clear();
lcd.print("Enter number: ");
}
void loop()
{
char key = keypad.getKey();
if (key)
{
if (key == '#')
{
int guessedNumber = userInput.toInt();
lcd.clear();
if (guessedNumber == randomNumber)
{
digitalWrite(Pin11, HIGH);
lcd.print("Correct!");
delay(3000);
resetGame();
}
else if (guessedNumber < randomNumber)
{
lcd.print("Too low!");
digitalWrite(Pin10, HIGH);
}
else
{
lcd.print("Too high!");
digitalWrite(Pin10, HIGH);
}
delay(2000);
digitalWrite(Pin10, LOW);
userInput = "";
lcd.clear();
lcd.print("Enter number: ");
}
else if (key == '*')
{
userInput = "";
lcd.clear();
lcd.print("Enter number: ");
}
else
{
if (userInput.length() < 2)
{
userInput += key;
lcd.setCursor(13, 0);
lcd.print(userInput);
}
}
}
}
void resetGame()
{
digitalWrite(Pin11, LOW);
randomNumber = random(1, 21);
userInput = "";
lcd.clear();
lcd.print("New game!");
delay(2000);
lcd.clear();
lcd.print("Enter number: ");
}