#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN);
Servo myServo;
// UID kartu default di Wokwi: 04 A5 8C 1A 2B 4F 80
byte allowedUID[4] = {0x04, 0xA5, 0x8C, 0x1A};
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
myServo.attach(3);
myServo.write(0);
Serial.println("Tempelkan kartu RFID virtual di Wokwi...");
}
bool checkUID(byte *uid) {
for (byte i = 0; i < 4; i++) {
if (uid[i] != allowedUID[i]) return false;
}
return true;
}
void loop() {
if (!rfid.PICC_IsNewCardPresent()) return;
if (!rfid.PICC_ReadCardSerial()) return;
Serial.print("UID: ");
for (byte i = 0; i < rfid.uid.size; i++) {
Serial.print(rfid.uid.uidByte[i], HEX);
Serial.print(" ");
}
Serial.println();
if (checkUID(rfid.uid.uidByte)) {
Serial.println("Akses diterima!");
myServo.write(90);
delay(3000);
myServo.write(0);
} else {
Serial.println("Akses ditolak!");
}
rfid.PICC_HaltA();
}