#include uFR reader(10, 11, 12); // rx, tx, reset #define DEBUG_CODE void setup() { pinMode(LED_BUILTIN, OUTPUT); Serial.begin(9600); delay(1000); reader.begin(); delay(3000); // Required! uint8_t type[4]; uint8_t serialnumber[4]; Serial.print("Type: "); Serial.print(reader.getReaderType(type), HEX); for (int i = 0; i < 4; i++) { Serial.print(type[i], HEX); } Serial.println(""); Serial.print("Serial number [DEC] : "); Serial.print(reader.getReaderSerial(serialnumber), DEC); for (int i = 0; i < 4; i++) { Serial.print(serialnumber[i], DEC); } Serial.println(""); delay(3000); Serial.println("Waiting for card"); } void loop() { uint8_t cardID[10]; uint8_t length = 0; uint8_t chiptype = 0; uint8_t code; code = reader.getCardID(cardID, &length, &chiptype); if (code == 0) { Serial.print("Card found! UID:"); for (int i = 0; i < length; i++) { //show leading zero for 0x00 to 0x0F if (cardID[i] < 16) Serial.print("0"); Serial.print(cardID[i], HEX); } Serial.println(""); Serial.print("Length [HEX]: "); Serial.print("0x"); Serial.print(length, HEX); Serial.println(); Serial.print("Chip type code [HEX]: "); Serial.print("0x"); Serial.print(chiptype, HEX); Serial.println(); digitalWrite(LED_BUILTIN, HIGH); delay(3000); digitalWrite(LED_BUILTIN, LOW); Serial.println("Waiting for card"); } else if (code != NO_CARD) { #ifdef DEBUG_CODE Serial.print("Error code [HEX]: "); Serial.print("0x"); Serial.print(code, HEX); Serial.println(); delay(5000); Serial.println("Waiting for card"); #endif //DEBUG_CODE } delay(200); }