Загрузка данных


#include <LiquidCrystal.h>
#include <Keypad.h>

// Подключение дисплея LCD1602: (RS, E, D4, D5, D6, D7)
LiquidCrystal lcd(12, 11, A0, A1, A2, A3);

// Настройка матричной клавиатуры 4x4
const byte ROWS = 4;
const byte COLS = 4;

// Сопоставление кнопок S1-S16:
// S1-S3: 1, 2, 3       | S4: A
// S5-S7: 4, 5, 6       | S8: B
// S9-S11: 7, 8, 9      | S12: C
// S13: X (Сброс)       | S14: 0 | S15: * | S16: E (Ввод/Enter)
char keys[ROWS][COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'X', '0', '*', 'E'}
};

// Пины подключения строк и столбцов к Arduino Uno
byte rowPins[ROWS] = {2, 3, 4, 5}; 
byte colPins[COLS] = {6, 7, 8, 9}; 

Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

// Задайте ваш пароль (любая комбинация)
const String correctPass = "1234";
String enteredPass = "";

void resetScreen() {
  enteredPass = "";
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("ENTER CODE:");
  lcd.setCursor(0, 1);
}

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  resetScreen();
}

void loop() {
  char key = keypad.getKey();
  
  if (key) {
    if (key == 'E') { // Кнопка S16 — Подтверждение ввода
      if (enteredPass.length() > 0) {
        if (enteredPass == correctPass) {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("ACCESS GRANTED");
          Serial.println("PLAY"); // Сигнал для Python-скрипта
          delay(3000);
        } else {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("WRONG PASSWORD");
          delay(2000);
        }
        resetScreen();
      }
    } 
    else if (key == 'X') { // Кнопка S13 — Сброс ввода
      resetScreen();
    } 
    else { // Нажатие цифры или символа
      if (enteredPass.length() < 16) {
        enteredPass += key;
        lcd.setCursor(enteredPass.length() - 1, 1);
        lcd.print('*'); // Выводим звёздочку вместо цифры
      }
    }
  }
}