#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN);
LiquidCrystal_I2C lcd(0x27, 16, 2);
// UID kartu yang diizinkan (ubah sesuai UID kartu kamu)
byte allowedUID[4] = {0x01, 0x02, 0x03, 0x04};
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Tempel Kartu");
}
void loop() {
if (!rfid.PICC_IsNewCardPresent()) return;
if (!rfid.PICC_ReadCardSerial()) return;
Serial.print("UID Kartu: ");
for (byte i = 0; i < rfid.uid.size; i++) {
Serial.print("0x");
Serial.print(rfid.uid.uidByte[i], HEX);
Serial.print(" ");
}
Serial.println();
bool akses = true;
for (byte i = 0; i < 4; i++) {
if (rfid.uid.uidByte[i] != allowedUID[i]) {
akses = false;
}
}
lcd.clear();
if (akses) {
lcd.setCursor(0,0);
lcd.print("Akses");
lcd.setCursor(0,1);
lcd.print("Diterima");
}
else {
lcd.setCursor(0,0);
lcd.print("Akses");
lcd.setCursor(0,1);
lcd.print("Ditolak");
}
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Tempel Kartu");
rfid.PICC_HaltA();
}