#include <SPI.h>
#include <MFRC522.h>
#define RED LEDR
#define BLUE LEDB
#define GREEN LEDG
#define RST_PIN D3 // RC522: RST -> D3
#define SDA_PIN D2 // RC522: SDA -> D2
MFRC522 rfid(SDA_PIN, RST_PIN);
byte ID[4] = {121,127,254,179};
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
pinMode(RED,OUTPUT);
pinMode(BLUE,OUTPUT);
pinMode(GREEN,OUTPUT);
}
void loop() {
if (!rfid.PICC_IsNewCardPresent()) // Yeni kartın okunması beklenir
{
BEKLE(); // Kart okutulmazsa mavi LED yanar
Serial.println("okunamadi");
delay(1000);
return;
}
if (!rfid.PICC_ReadCardSerial()) //Kart okunmadığı zaman beklenilir
{
BEKLE(); // Kart okutulmazsa mavi LED yanar
delay(1000);
return;
}
if (rfid.uid.uidByte[0] == ID[0] && //Okunan kart ID'si ile ID değişkeni karşılaştırılır
rfid.uid.uidByte[1] == ID[1] &&
rfid.uid.uidByte[2] == ID[2] &&
rfid.uid.uidByte[3] == ID[3]) {
DOGRU(); // Okutulan kart doğruysa yeşil LED yanar
delay(1000);
} else { // Okutulan kart yanlışsa bu blok çalışır
YANLIS(); // Okutulan kart yanlışsa kırmızı LED yanar
ID_OGREN(); // seri port ekranında kartın ID'si yazılır.
delay(1000);
}
rfid.PICC_HaltA();
}
void BEKLE() {
digitalWrite(BLUE,HIGH);
digitalWrite(RED,LOW);
digitalWrite(GREEN,LOW);
}
void DOGRU() {
digitalWrite(BLUE,LOW);
digitalWrite(RED,LOW);
digitalWrite(GREEN,HIGH);
}
void YANLIS() {
digitalWrite(BLUE,LOW);
digitalWrite(RED,HIGH);
digitalWrite(GREEN,LOW);
}
void ID_OGREN() {
Serial.print("ID Numarasi: ");
for (int sayac = 0; sayac < 4; sayac++) {
Serial.print(rfid.uid.uidByte[sayac]);
Serial.print(" ");
}
Serial.println("");
}