#include <SPI.h> //SPI kütüphanemizi tanımlıyoruz.
#include <MFRC522.h> //MFRC522 kütüphanemizi tanımlıyoruz.
#include <Servo.h>
//Servo kütüphanemizi tanımlıyoruz.
int RST_PIN = 9; //RC522 modülü reset pinini tanımlıyoruz.
int SS_PIN = 10; //RC522 modülü chip select pinini tanımlıyoruz.
int servoPin = 8; //Servo motor pinini tanımlıyoruz.
int buzzerPin = 7;
int notaSayisi = 8;
int D = 2000;
int notalar[] = {D};
Servo motor; //Servo motor için değişken oluşturuyoruz.
MFRC522 rfid(SS_PIN, RST_PIN); //RC522 modülü ayarlarını yapıyoruz.
byte ID[4] = {195,251,132,7}; //Yetkili kart ID'sini tanımlıyoruz.
void setup() {
motor.attach(servoPin); //Servo motor pinini motor değişkeni ile ilişkilendiriyoruz.
Serial.begin(9600); //Seri haberleşmeyi başlatıyoruz.
SPI.begin(); //SPI iletişimini başlatıyoruz.
rfid.PCD_Init(); //RC522 modülünü başlatıyoruz.
}
void loop() {
if (!rfid.PICC_IsNewCardPresent()) //Yeni kartın okunmasını bekliyoruz.
return;
if (!rfid.PICC_ReadCardSerial()) //Kart okunmadığı zaman bekliyoruz.
return;
if (rfid.uid.uidByte[0] == ID[0] && //Okunan kart ID'si ile ID değişkenini karşılaştırıyoruz.
rfid.uid.uidByte[1] == ID[1] &&
rfid.uid.uidByte[2] == ID[2] &&
rfid.uid.uidByte[3] == ID[3]) {
Serial.println("Kapi acildi");
ekranaYazdir();
tone(buzzerPin,1000); digitalWrite(6, HIGH);
delay(500);
noTone(buzzerPin);
delay(20);
delay(500);
digitalWrite(6, LOW);
delay(100);
motor.write(180); //Servo motoru 180 dereceye getiriyoruz.
delay(3000);
motor.write(0); //Servo motoru 0 dereceye getiriyoruz.
delay(1000);
} else { //Yetkisiz girişte içerideki komutlar çalıştırılır.
Serial.println("Yetkisiz Kart");
ekranaYazdir();
tone(buzzerPin,1500); digitalWrite(5, HIGH);
delay(500);
noTone(buzzerPin);
delay(20);
delay(500);
digitalWrite(5, LOW);
delay(100);
}
rfid.PICC_HaltA();
}
void ekranaYazdir() {
Serial.print("ID Numarasi: ");
for (int sayac = 0; sayac < 4; sayac++) {
Serial.print(rfid.uid.uidByte[sayac]);
Serial.print(" ");
}
Serial.println("");
}