#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#include "SPI.h"
#include "MFRC522.h"
Servo servo;
LiquidCrystal_I2C lcd(0x27, 16,2);
#define RST_PIN 9 // RES pin
#define SS_PIN 10 // SDA (SS) pin
byte readCard[4];
String cardID = "5361D897"; // замените на ID своей метки
String tagID = "";
MFRC522 mfrc522(SS_PIN, RST_PIN); // создание объекта mfrc522
#define ser 7
void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
servo.write(0);
servo.attach(ser);
lcd.init();
lcd.backlight();
}
void loop() {
while (getID()) {
if (tagID == cardID) {
lcd.clear();
Serial.println("Access Granted!");
servo.write(90);
lcd.setCursor(2,0);
lcd.print("Zamok otkrit");
delay(5000);
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Zamok zakrit");
servo.write(0);
delay(2000);
}
else {
lcd.clear();
lcd.setCursor(2,0);
lcd.print("ne tot klyuch");
Serial.println("Access Denied!");
delay(2000);
}
lcd.clear();
lcd.setCursor(2,0);
lcd.print("ID: ");
lcd.setCursor(0,1);
lcd.print(tagID);
Serial.print("ID: ");
Serial.println(tagID);
delay(2000);
}
}
boolean getID() {
if (! mfrc522.PICC_IsNewCardPresent()) {
return false;
}
if (! mfrc522.PICC_ReadCardSerial()) {
return false;
}
tagID = "";
for (uint8_t i = 0; i < 4; i++) {
tagID.concat(String(mfrc522.uid.uidByte[i], HEX));
}
tagID.toUpperCase();
mfrc522.PICC_HaltA();
return true;
}