ЁЯФз рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХ
- Arduino рдмреЛрд░реНрдб (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдКрдиреЛ, R4)
- I2C рдПрд▓рд╕реАрдбреА 1602 рдбрд┐рд╕реНрдкреНрд▓реЗ (I2C рдкрддрд╛ рдЖрдорддреМрд░ рдкрд░ 0x27)
- рдкреБрд╢ рдмрдЯрди (рдЧреЗрдо рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ/рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП)
- рдЬрдореНрдкрд░ рддрд╛рд░ рдФрд░ рдмреНрд░реЗрдбрдмреЛрд░реНрдб
- рдХрдВрдкреНрдпреВрдЯрд░ (рд╕реАрд░рд┐рдпрд▓ рдореЙрдирд┐рдЯрд░ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП)
ЁЯУМ рд╡рд╛рдпрд░рд┐рдВрдЧ рдХрдиреЗрдХреНрд╢рди

1. I2C рдПрд▓рд╕реАрдбреА 1602 рдбрд┐рд╕реНрдкреНрд▓реЗ
- VCC: тЖТ рдЖрд░реНрдбреБрдЗрдиреЛ 5V
- GND: тЖТ рдЖрд░реНрдбреБрдЗрдиреЛ GND
- рдПрд╕рдбреАрдП: тЖТ рдЖрд░реНрдбреБрдЗрдиреЛ A4 (рдпреВрдиреЛ) рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдПрд╕рдбреАрдП pin
- рдПрд╕рд╕реАрдПрд▓: тЖТ рдЖрд░реНрдбреБрдЗрдиреЛ A5 (рдпреВрдиреЛ) рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдПрд╕рд╕реАрдПрд▓ pin
2. рд░реАрд╕реЗрдЯ/рдПрдбрд╡рд╛рдВрд╕ рдмрдЯрди
- рдПрдХ рдЯрд░реНрдорд┐рдирд▓: тЖТ рдЖрд░реНрдбреБрдЗрдиреЛ рдбрд┐рдЬрд┐рдЯрд▓ Pin 4
- рдЕрдиреНрдп рдЯрд░реНрдорд┐рдирд▓: тЖТ GND
- рдиреЛрдЯ: рдЖрдВрддрд░рд┐рдХ рдкреБрд▓-рдЕрдк рдкреНрд░рддрд┐рд░реЛрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ pin рдХреЗ рд▓рд┐рдП рдореЛрдб рдЗрдирдкреБрдЯ_рдкреБрд▓рдЕрдк рдХреЛрдб рдореЗрдВ
ЁЯТ╗ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг
рдиреАрдЪреЗ рдкреВрд░рд╛ рд╕реНрдХреЗрдЪ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЧреЗрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдХреЛрдб рдореЗрдВ:
- RSI рдЧреБрдкреНрдд рд╕рдВрдЦреНрдпрд╛ рдПрдХ рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде рдмрдврд╝рддрд╛ рд╣реИ (рд╕реНрддрд░ 1: 1-100, рд╕реНрддрд░ 2: 1-200, рдЖрджрд┐)ред
- рд╕реНрдХреЛрд░ рдХреАping рдЕрдиреБрдорд╛рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрддрд╛ рд╣реИ.
- A рдХрд╕реНрдЯрдо рд╕реНрдорд╛рдЗрд▓реА рдЪреЗрд╣рд░рд╛ (рдПрдХ рдХрд╕реНрдЯрдо рдПрд▓рд╕реАрдбреА рдХреИрд░реЗрдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛) рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдЬреАрддрдиреЗ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред
- рд░реАрд╕реЗрдЯ рдмрдЯрди рджрдмрд╛рдиреЗ рд╕реЗ рдЧреЗрдо рддреБрд░рдВрдд рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
#include <LiquidCrystal_I2C.h>
// ----- LCD Settings -----
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 columns x 2 rows
// ----- Game Variables -----
int secretNumber;
bool gameOver = false;
int guessCount = 0;
int level = 1; // Starting level
// ----- Reset/Advance Button Pin -----
const int resetButtonPin = 4;
// ----- Custom Character: Smiley Face -----
byte smiley[8] = {
B00000,
B01010,
B01010,
B00000,
B10001,
B01110,
B00000,
B00000
};
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
// Set up reset button with internal pull-up resistor
pinMode(resetButtonPin, INPUT_PULLUP);
// Create custom smiley face character at slot 0
lcd.createChar(0, smiley);
// Seed the random generator using an unconnected analog pin
randomSeed(analogRead(0));
// Start the first game
startNewGame();
}
void loop() {
// ----- Check Reset/Advance Button -----
if (digitalRead(resetButtonPin) == LOW) {
// Wait until the button is released to avoid multiple triggers
while (digitalRead(resetButtonPin) == LOW) { delay(10); }
startNewGame();
delay(500); // Debounce delay
}
// ----- Process Serial Input for Guesses -----
if (Serial.available() > 0 && !gameOver) {
int guess = Serial.parseInt();
if (guess == 0) return; // Skip invalid input
guessCount++; // Increase guess count
lcd.clear();
if (guess < secretNumber) {
lcd.setCursor(0, 0);
lcd.print("Too Low!");
Serial.println("Too low! Try again:");
}
else if (guess > secretNumber) {
lcd.setCursor(0, 0);
lcd.print("Too High!");
Serial.println("Too high! Try again:");
}
else {
// Correct guess!
lcd.setCursor(0, 0);
lcd.print("Correct!");
lcd.setCursor(0, 1);
lcd.print("Guesses: ");
lcd.print(guessCount);
lcd.write(byte(0)); // Display custom smiley
Serial.println("Correct! You win!");
gameOver = true;
// Increase level for the next game
level++;
// Wait a moment before starting a new game
delay(3000);
startNewGame();
}
delay(1500); // Short delay for user to see feedback
// If the game isn't over, re-prompt on the LCD
if (!gameOver) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Level ");
lcd.print(level);
lcd.print(" Guess?");
Serial.println("Enter your next guess:");
}
}
}
void startNewGame() {
gameOver = false;
guessCount = 0;
// Generate a new secret number between 1 and (level * 100)
secretNumber = random(1, level * 100 + 1);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Level ");
lcd.print(level);
lcd.setCursor(0, 1);
lcd.print("1-");
lcd.print(level * 100);
Serial.print("New game started! Level ");
Serial.print(level);
Serial.print(": Guess a number between 1 and ");
Serial.println(level * 100);
}
ЁЯУЛ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
- рдЦреЗрд▓ рдЖрд░рдВрднреАрдХрд░рдг:
RSIstartNewGame()рдлрд╝рдВрдХреНрд╢рди рдЧреЗрдо рд╕реНрдерд┐рддрд┐ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рд╡рд░реНрддрдорд╛рди рд╕реНрддрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирдпрд╛ рдЧреБрдкреНрдд рдирдВрдмрд░ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЕрдиреБрдорд╛рди рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрд▓рд╕реАрдбреА рдкрд░ рд╕реНрддрд░ рдФрд░ рд╕рдВрдЦреНрдпрд╛ рд╕реАрдорд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред - рд╕реНрдХреЛрд░ рдХреАping:
рд╣рд░ рд╡реИрдз рдЕрдиреБрдорд╛рди рд╕реЗ рдореВрд▓реНрдп рдмрдврд╝рддрд╛ рд╣реИguessCountрдЬрдм рдЖрдк рд╕рд╣реА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЕрдиреБрдорд╛рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдПрдХ рд╕реНрдорд╛рдЗрд▓реА рдЪреЗрд╣рд░реЗ рдХреЗ рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде рдПрд▓рд╕реАрдбреА рдкрд░ рджрд┐рдЦрд╛рдИ рдЬрд╛рддреА рд╣реИред - рдПрдХрд╛рдзрд┐рдХ рд╕реНрддрд░:
рд╕рд╣реА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдкрд░, рдЦреЗрд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХрддрдо рд╕рдВрднрд╡ рдЧреБрдкреНрдд рд╕рдВрдЦреНрдпрд╛ рд╕реАрдорд╛ рдХреЛ рдмрдврд╝рд╛рдХрд░ рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдкрд░ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИ (рд╕реНрддрд░ 1: 1-100, рд╕реНрддрд░ 2: 1-200, рдЖрджрд┐)ред - рд░реАрд╕реЗрдЯ рдмрдЯрди:
рдкреБрд╢ рдмрдЯрди (рдЗрд╕рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ) рджрдмрд╛рдиреЗ рдкрд░ pin 4) рддреБрд░рдВрдд рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдПрдХ рдирдпрд╛ рдЧреЗрдо рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдХрд┐рд╕реА рднреА рд╕рдордп рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░ рд╕рдХреЗрдВрдЧреЗред - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдирд┐рд╡реЗрд╢:
рд╕реАрд░рд┐рдпрд▓ рдореЙрдирд┐рдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдкрдХреЗ рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлреАрдбрдмреИрдХ ("рдмрд╣реБрдд рдХрдо!" рдпрд╛ "рдмрд╣реБрдд рдЕрдзрд┐рдХ!") рдПрд▓рд╕реАрдбреА рдФрд░ рд╕реАрд░рд┐рдпрд▓ рдореЙрдирд┐рдЯрд░ рджреЛрдиреЛрдВ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред - рдХрд╕реНрдЯрдо рд╡рд░реНрдг:
рдЬрдм рдЖрдк рдЬреАрддрддреЗ рд╣реИрдВ рддреЛ рдПрдХ рдХрд╕реНрдЯрдо рд╕реНрдорд╛рдЗрд▓реА рдлреЗрд╕ рдХреИрд░реЗрдХреНрдЯрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
ЁЯОп рд╕рдорд╛рдкрди
рдЗрд╕ рдЙрдиреНрдирдд рд░реЗрдЯреНрд░реЛ рдЧреЗрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рд░реАрд╕реЗрдЯ рдмрдЯрди: рдХрд┐рд╕реА рднреА рд╕рдордп рдЦреЗрд▓ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВ.
- рд╕реНрдХреЛрд░ рдХреАping: рдЗрд╕ рдмрд╛рдд рдкрд░ рдирдЬрд╝рд░ рд░рдЦреЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдХрд┐рддрдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдП рд╣реИрдВред
- рдПрдХрд╛рдзрд┐рдХ рд╕реНрддрд░: рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдЖрдк рдЬреАрддрддреЗ рдЬрд╛рдПрдВ, рдХрдард┐рдирд╛рдИ рдмрдврд╝рддреА рдЬрд╛рдПред
- рдХрд╕реНрдЯрдо рдЪрд┐рд╣реНрди: рдЬрдм рдЖрдк рдЬреАрддреЗрдВ рддреЛ рдПрдХ рдордЬрд╝реЗрджрд╛рд░ рд╕реНрдорд╛рдЗрд▓реА рдЪреЗрд╣рд░реЗ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ!
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ, рдЬреИрд╕реЗ рдХрд┐ рдЕрдзрд┐рдХ рдЧреЗрдо рд╕реНрддрд░ рдЬреЛрдбрд╝рдирд╛ рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ред рдЕрдкрдиреЗ рд░реЗрдЯреНрд░реЛ рдЧреЗрдо рдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ! ЁЯШКЁЯСН