#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
// Визначаємо піни підключення
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // Створюємо об'єкт для роботи з RFID
// Тут ми зберігаємо UID авторизованої карти (приклад: BD 31 15 2B)
// Ви можете замінити його на UID вашої карти, який буде виведено в Serial Monitor
String authorisedUID = "01 02 03 04";
Servo sg90;
const int ledred=5;
const int ledgreen=4;
const int servoPin=6;
void setup() {
pinMode(ledred, OUTPUT);
pinMode(ledgreen, OUTPUT);
pinMode(7,OUTPUT);
sg90.attach(servoPin);
sg90.write(0);
Serial.begin(9600); // Ініціалізація послідовного порту
SPI.begin(); // Ініціалізація SPI шини
mfrc522.PCD_Init(); // Ініціалізація RFID модуля
Serial.println("RFID RC522 готовий до роботи.");
Serial.println("Піднесіть картку до зчитувача...");
}
void loop() {
// Перевіряємо, чи є нова картка в зоні дії
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return; // Якщо ні, починаємо цикл заново
}
// Якщо картка є, намагаємось її прочитати
if ( ! mfrc522.PICC_ReadCardSerial()) {
return; // Якщо не вдалося прочитати, починаємо заново
}
// Формуємо рядок з UID картки для виведення
String content = "";
Serial.print("Знайдено картку з UID: ");
for (byte i = 0; i < mfrc522.uid.size; i++) {
// Форматуємо вивід: друкуємо байти у верхньому регістрі HEX з пробілами
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
content.toUpperCase(); // Переводимо весь рядок у верхній регістр
Serial.println();
// --- Перевірка авторизації ---
// Видаляємо перший пробіл зі зчитаного UID для коректного порівняння
if (content.substring(1) == authorisedUID) {
digitalWrite(ledgreen,1);
sg90.write(180);
delay(500);
Serial.println(">>> ДОСТУП ДОЗВОЛЕНО! Це авторизована картка. <<<");
// Тут можна додати дії, наприклад, увімкнути LED або сервопривід
delay(1000);
digitalWrite(ledgreen,0);
sg90.write(0);
delay(1000);
} else {
Serial.println(">>> ДОСТУП ЗАБОРОНЕНО! Це невідома картка. <<<");
digitalWrite(ledred,1);
tone(3,440,1);
delay(1000);
digitalWrite(ledred,0);
noTone(3);
delay(1000);
}
Serial.println("-----------------------------------");
// Зупиняємо зв'язок з поточною карткою, щоб можна було прочитати наступну
mfrc522.PICC_HaltA();
}Loading
mfrc522
mfrc522