#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define RST_PIN 9
#define SS_PIN 10
#define SERVO_PIN 6
MFRC522 mfrc522(SS_PIN, RST_PIN);
Servo myServo;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
SPI.begin();
mfrc522.PCD_Init();
myServo.attach(SERVO_PIN);
myServo.write(0); // Исходное положение (закрыто)
lcd.init();
lcd.backlight();
printWaiting();
}
void loop() {
// Проверка: приложена ли карта?
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Проверка: удалось ли считать UID?
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
// Если мы здесь — значит карта считана. Открываем для всех!
openDoor();
}
void openDoor() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Access Granted!");
lcd.setCursor(0, 1);
lcd.print("Welcome");
myServo.write(90); // Поворот серво (открытие)
delay(3000); // Ждем 3 секунды
myServo.write(0); // Возврат в закрытое положение
printWaiting();
}
void printWaiting() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Scan Card...");
}