#include "SPI.h" #include "MFRC522.h" #define SS_PIN 10 #define RST_PIN 9 int LED_A = 8; int LED_B = 7; int LED_C = 6; int LED_D = 5; int LED_E = 4; MFRC522 rfid(SS_PIN, RST_PIN); MFRC522::MIFARE_Key key; void setup() { Serial.begin(9600); SPI.begin(); rfid.PCD_Init(); pinMode(LED_A, OUTPUT); pinMode(LED_B, OUTPUT); pinMode(LED_C, OUTPUT); pinMode(LED_D, OUTPUT); pinMode(LED_E, OUTPUT); } void loop() { if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return; // Serial.print(F("PICC type: ")); MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); // Serial.println(rfid.PICC_GetTypeName(piccType)); // Check is the PICC of Classic MIFARE type if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) { Serial.println(F("Your tag is not of type MIFARE Classic.")); return; } String strID = ""; for (byte i = 0; i < 4; i++) { strID += (rfid.uid.uidByte[i] < 0x10 ? "0" : "") + String(rfid.uid.uidByte[i], HEX) + (i!=3 ? ":" : ""); } strID.toUpperCase(); Serial.print("Tap card key: "); Serial.println(strID); if (strID.indexOf("E2:F6:07:2E") >= 0) { digitalWrite(LED_A, HIGH); } else { digitalWrite(LED_A, LOW); } if (strID.indexOf("00:7D:8D:7C") >= 0) { digitalWrite(LED_B, HIGH); } else { digitalWrite(LED_B, LOW); } if (strID.indexOf("93:47:B4:2E") >= 0) { digitalWrite(LED_C, HIGH); } else { digitalWrite(LED_C, LOW); } if (strID.indexOf("F2:79:B5:2E") >= 0) { digitalWrite(LED_D, HIGH); } else { digitalWrite(LED_D, LOW); } if (strID.indexOf("F2:85:EE:2E") >= 0) { digitalWrite(LED_E, HIGH); } else { digitalWrite(LED_E, LOW); } rfid.PICC_HaltA(); rfid.PCD_StopCrypto1(); }