ЁЯО▓ рд░реЗрдЯреНрд░реЛ рдЧреЗрдо: рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдПрдВ


ЁЯФз рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХ

  • Arduino рдмреЛрд░реНрдб (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, Arduino Uno рдпрд╛ Arduino R4)
  • I2C рдПрд▓рд╕реАрдбреА 1602 рдбрд┐рд╕реНрдкреНрд▓реЗ
  • рдЬрдореНрдкрд░ рддрд╛рд░
  • рдмреНрд░реЗрдбрдмреЛрд░реНрдб (рд╡реИрдХрд▓реНрдкрд┐рдХ)

ЁЯУМ рд╡рд╛рдпрд░рд┐рдВрдЧ рдХрдиреЗрдХреНрд╢рди

  1. I2C рдПрд▓рд╕реАрдбреА 1602 рдбрд┐рд╕реНрдкреНрд▓реЗ:
    • VCC: тЖТ рдЖрд░реНрдбреБрдЗрдиреЛ 5V
    • GND: тЖТ рдЖрд░реНрдбреБрдЗрдиреЛ GND
    • рдПрд╕рдбреАрдП: тЖТ рдЖрд░реНрдбреБрдЗрдиреЛ A4 (Uno рдкрд░) рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд SDA pin
    • рдПрд╕рд╕реАрдПрд▓: тЖТ рдЖрд░реНрдбреБрдЗрдиреЛ A5 (Uno рдкрд░) рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд SCL pin

рдиреЛрдЯ: рдЗрди рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ I2C рдкрддрд╛ рд╣реИ 0x27рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ I2C рд╕реНрдХреИрдирд░ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВред


ЁЯТ╗ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг

рдЗрд╕ рд╕реНрдХреЗрдЪ рдореЗрдВ рдирд┐рдореНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: LiquidCrystal_I2C рд▓рд╛рдЗрдмреНрд░реЗрд░реАред рдпрд╣ 1 рд╕реЗ 100 рдХреЗ рдмреАрдЪ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛, рдлрд┐рд░ рдЖрдкрдХреЛ (рд╕реАрд░рд┐рдпрд▓ рдореЙрдирд┐рдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдЕрдиреБрдорд╛рди рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рджреЗрдЧрд╛ред рдЖрдкрдХреЗ рдЗрдирдкреБрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрд▓рд╕реАрдбреА "рдмрд╣реБрдд рдЕрдзрд┐рдХ!" рдпрд╛ "рдмрд╣реБрдд рдХрдо!" рдЬреИрд╕реЗ рд╕рдВрдХреЗрдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рд╕рд╣реА рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛ рд▓реЗрддреЗред

#include <LiquidCrystal_I2C.h>

// ----- LCD Settings -----
LiquidCrystal_I2C lcd(0x27, 16, 2);  // I2C address 0x27, 16 columns, 2 rows

// Global game variables
int secretNumber;
bool gameOver = false;

void setup() {
  // Initialize Serial Monitor
  Serial.begin(9600);
  while (!Serial) { ; }  // Wait for Serial to initialize (if needed)
  
  // Initialize LCD
  lcd.init();
  lcd.backlight();
  
  // Welcome message on LCD
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Guess The Number");
  lcd.setCursor(0, 1);
  lcd.print("1-100");
  
  // Seed random generator using an unconnected analog pin
  randomSeed(analogRead(0));
  
  // Generate secret number between 1 and 100
  secretNumber = random(1, 101);
  
  // Prompt in Serial Monitor
  Serial.println("Welcome to 'Guess The Number'!");
  Serial.println("I'm thinking of a number between 1 and 100.");
  Serial.println("Enter your guess:");
}

void loop() {
  if (Serial.available() > 0 && !gameOver) {
    int guess = Serial.parseInt();
    if (guess == 0) return; // Skip if no valid number entered
    
    // Clear LCD for new message
    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 {
      lcd.setCursor(0, 0);
      lcd.print("Correct!");
      lcd.setCursor(0, 1);
      lcd.print("You Win!");
      Serial.println("Correct! You win!");
      gameOver = true;
    }
    
    // Wait a moment before next input
    delay(1500);
    
    // If game not over, re-prompt on LCD
    if (!gameOver) {
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Guess 1-100");
      Serial.println("Enter your next guess:");
    }
  }
}

ЁЯУЛ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

  • рдЦреЗрд▓ рдЖрд░рдВрднреАрдХрд░рдг:
    • рдПрд▓рд╕реАрдбреА рдПрдХ рд╕реНрд╡рд╛рдЧрдд рд╕рдВрджреЗрд╢ ("рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдПрдВ") рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реАрдорд╛ (1-100) рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
    • рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЧреБрдкреНрдд рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХреА рдЬрд╛рддреА рд╣реИ random(1, 101).
  • рд╕реАрд░рд┐рдпрд▓ рдореЙрдирд┐рдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ:
    • рдЦрд┐рд▓рд╛рдбрд╝реА рд╕реАрд░рд┐рдпрд▓ рдореЙрдирд┐рдЯрд░ рдореЗрдВ рдЕрдиреБрдорд╛рди рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИред
    • рдХреЛрдб рдЗрди рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ Serial.parseInt().
  • рдкреНрд░рддрд┐рдкреБрд╖реНрдЯрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛:
    • рдпрджрд┐ рдЕрдиреБрдорд╛рди рдмрд╣реБрдд рдХрдо рдпрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдПрд▓рд╕реАрдбреА рдФрд░ рд╕реАрд░рд┐рдпрд▓ рдореЙрдирд┐рдЯрд░ рдлреАрдбрдмреИрдХ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдмрд╣реБрдд рдХрдо!" рдпрд╛ "рдмрд╣реБрдд рдЕрдзрд┐рдХ!")ред
    • рдПрдХ рдмрд╛рд░ рд╕рд╣реА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧ рдЬрд╛рдиреЗ рдкрд░ рдмрдзрд╛рдИ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЦреЗрд▓ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
  • рдкреНрд░рджрд░реНрд╢рди рдЕрджреНрдпрддрди:
    • рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрдорд╛рди рдХреЗ рдмрд╛рдж рдПрд▓рд╕реАрдбреА рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢ рдЫреЛрдЯреА 16├Ч2 рд╕реНрдХреНрд░реАрди рдкрд░ рднреА рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред

ЁЯОп рд╕рдВрд╡рд░реНрджреНрдзрди рдФрд░ рд╡рд┐рдЪрд╛рд░

  • рд░реАрд╕реЗрдЯ рдмрдЯрди:
    • Arduino рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд┐рдП рдмрд┐рдирд╛ рдЧреЗрдо рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╢ рдмрдЯрди рдЬреЛрдбрд╝реЗрдВред
  • рд╕реНрдХреЛрд░ рдХреАping:
    • рдЕрдиреБрдорд╛рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирдЬрд╝рд░ рд░рдЦреЗрдВ рдФрд░ рд╕реНрдХреЛрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред
  • рдПрдХрд╛рдзрд┐рдХ рд╕реНрддрд░:
    • рдРрд╕реЗ рд╕реНрддрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдЬреАрддрдиреЗ рдкрд░ рд╕рдВрдЦреНрдпрд╛ рд╕реАрдорд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред
  • рдХрд╕реНрдЯрдо рд╡рд░реНрдг:
    • рдордиреЛрд░рдВрдЬрдХ рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП рдПрд▓рд╕реАрдбреА рдкрд░ рдХрд╕реНрдЯрдо рдХреИрд░реЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдЬреИрд╕реЗ, рдЬреАрддрддреЗ рд╕рдордп рд╕реНрдорд╛рдЗрд▓реА рдЪреЗрд╣рд░реЗ)ред

I2C LCD 1602 рдХреЗ рд╕рд╛рде Arduino рдкрд░ рдЕрдкрдиреЗ рд░реЗрдЯреНрд░реЛ, рдЯреЗрдХреНрд╕реНрдЯ-рдЖрдзрд╛рд░рд┐рдд рдЧреЗрдо рдмрдирд╛рдиреЗ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ! рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИ рдпрд╛ рдЖрдкрдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ рдкреВрдЫреЗрдВред рд╣реИрдкреНрдкреА рдЧреЗрдорд┐рдВрдЧ! ЁЯШКЁЯОотЬи

ЁЯУб рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░реЗрдВ - рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдврд╝рд╛рдПрдБред

рдПрдХ рдЬрд╡рд╛рдм рд▓рд┐рдЦреЗрдВ