Programlama Kodları
//AÇIKLAMA
//Bu uygulamada okutulan kartın belirlediğimiz kart UID'si ile aynı olup olmadığını test ettik.
//Aynıysa doğru, aynı değilse yanlış ifadesini seri port ekanına yazdırdık.
#include<SPI.h>
#include<MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN);
String kart_ID = "6934CE06";
String okunan_ID = "";
int i;
void setup()
{
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
Serial.println("MIFARE Classic Kart/Etiket Bekleniyor...");
}
void loop()
{
//__________________________________Kart/Etiket kontrolü_______________________________
//If'in içerisinde return kullanmamızın nedeni: If içi 1(true) olduğunda programın, loop
//döngüsünün başına gitmesini sağlamak içindir.
if (!rfid.PICC_IsNewCardPresent()) //Yeni bir kart/etiket algılanıp algılanmadığını kontrol eder.
{
return;
}
if (!rfid.PICC_ReadCardSerial()) //Kartın/etiketin UID (Benzersiz Kimlik)’sinin okunup okunamadığını belirler.
{
return;
}
Serial.println("Kart/Etiket Algılandı.");
okunan_ID = ""; //Stringi boşalt.
//__________________UID'yi bayt bayt okuma, birleştirme, büyük harfe çevirme____________________
for (i = 0; i < 4; i++)
{
if (rfid.uid.uidByte[i] < 0x10)
{
okunan_ID += "0"; // Tek haneli sayıların başına 0 ekleme.
}
okunan_ID.concat(String(rfid.uid.uidByte[i], HEX)); //"rfid.uid.uidByte[i]" komutuyla sayı olarak okuduğumuz baytı, HEX'e çevir ve ardından String yap. ardından, "concat" komutu ile okunan_ID stringinin son haliyle birleştir. for döngüsü ile bu durumu 4 sefer tekrarla.
}
okunan_ID.toUpperCase(); //büyük harfe çevir. kart_ID değişkenindeki harfler büyüktür. Ancak üstteki komutla HEX e dönüştürüldüğünde UID içerisindeki harfler küçülür. bu nedenle büyük harfe çevirme işlemi yapıldı.
Serial.print("Kart UID: "); Serial.println(okunan_ID);
//__________________Okunan UID ile tanımlanan ID'yi karşılaştır____________________
if (kart_ID == okunan_ID)
{
Serial.println("Okunan UID DOĞRU.");
delay(1000);
}
else
{
Serial.println("Okunan UID YANLIŞ!.");
delay(1000);
}
rfid.PCD_StopCrypto1(); //okuyucu (PCD) ile kart/etiket(PICC) arasındaki şifreli iletişimi (Crypto1) güvenli bir şekilde kapat.
}
Devre Şeması
Seri Port Ekran Görüntüsü

0 comments:
Yorum Gönder