/* ====== Deklarasi Library MFRC522 beserta konstanta terkait ===== */
#include <MFRC522.h> //Library MFRC522
#include <SPI.h> //Library SPI
#define RST_PIN 9 //pin RST modul RFID terhubung ke pin 9 Arduino
#define SS_PIN 10 //pin SS modul RFID terhubung ke pin 10 Arduino
MFRC522 rfid(SS_PIN, RST_PIN); //Deklarasi nama objek 'rfid'
/* ========= Deklarasi indikator Led hijau dan Led merah ========== */
#define green_Led 2 //led hijau terhubung pada pin 2
#define red_Led 3 //led merah terhubung pada pin 3
//----------------------------------------------------------------------------
void setup() {
Serial.begin(9600); //inisiasi komunikasi serial
SPI.begin(); //inisiasi SPI bus
rfid.PCD_Init(); //inisiasi modul MFRC522
pinMode(green_Led, OUTPUT); //set pin 2 sebagai Output
pinMode(red_Led,OUTPUT); //set pin 3 sebagai Output
Serial.println("Dekatkan Kartu Anda ke Reader");
}
//----------------------------------------------------------------------------
void loop() {
if(!rfid.PICC_IsNewCardPresent()) { //menunggu kartu didekatkan
return; //jika kartu tidak dekat, maka lompat ke baris akhir (baris 50)
}
if(!rfid.PICC_ReadCardSerial()) { //menunggu adanya data dari kartu
return; //jika kartu tidak merespon, maka lompat ke baris akhir (baris 50)
}
String uid = ""; //variabel tipe string dibuat kosong
Serial.print("UID = "); //tulis "UID = " ke Serial Monitor
for(int i=0;i<rfid.uid.size;i++) { //loop sebanyak ukuran UID
Serial.print(rfid.uid.uidByte[i]<0x10 ? "0" : ""); //jika data <10 tambahkan 0 didepan
Serial.print(rfid.uid.uidByte[i],HEX); //menampilkan 4 Byte UID
uid.concat(String(rfid.uid.uidByte[i]<0x10 ? "0" : "")); //jika data <10 tambahkan 0 didepan
uid.concat(String(rfid.uid.uidByte[i],HEX)); //susun UID dg langsung konversi ke String
}
uid.toUpperCase(); //konversi UID ke huruf besar
if(uid=="C2B2F52E") { //Kode UID tersimpan pada sistem utk dibandingkan
Serial.print(" : Akses diterima\n");
digitalWrite(green_Led, HIGH); //nyalakan Led hijau
delay(2000); digitalWrite(green_Led,LOW); //matikan Led hijau
rfid.PICC_HaltA(); //halt PICC
//rfid.PCD_StopCrypto1(); //stop encryption on PCD
return; //lompat ke baris terakhir (baris 50)
}
else {
Serial.print(" : Akses ditolak\n");
Serial.println("Kartu Tidak dikenal...");
digitalWrite(red_Led,HIGH); //nyalakan Led merah
delay(2000); digitalWrite(red_Led,LOW); //matikan Led merah
rfid.PICC_HaltA(); //halt PICC
//rfid.PCD_StopCrypto1(); //stop encryption on PCD
}
}