Arduino code – WORK IN PROGRESS!!!
#include <Keyboard.h>
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9
#define SS_1_PIN 8
#define SS_2_PIN 10
String p_scanned_uid_code = "11 22 33 44";
#define NR_OF_READERS 2
byte ssPins[] = {SS_1_PIN, SS_2_PIN};
MFRC522 mfrc522[NR_OF_READERS]; // Create MFRC522 instance.
uint8_t reader;
void setup() {
Serial.begin(9600);
while (!Serial); // Do nothing if no serial port is opened
SPI.begin(); // Init SPI bus
checkReaders(); // Init the readers
Keyboard.begin();
}
void loop() {
for (uint8_t reader = 0; reader < NR_OF_READERS; reader++) {
mfrc522[reader].PCD_Init(ssPins[reader], RST_PIN); // Init each MFRC522 reader
delay(1); // necessary delay to detect mifare ultralight
// Look for new cards
if (mfrc522[reader].PICC_IsNewCardPresent() && mfrc522[reader].PICC_ReadCardSerial()) {
//Serial.print(F("Reader "));
// Serial.print("reader no:");
//Serial.println(reader);
// Show some details of the PICC (that is: the tag/card)
// Serial.print(F(": Card UID:"));
//String test = dump_byte_array(mfrc522[reader].uid.uidByte, mfrc522[reader].uid.size);
String RFIDtag = "";
byte letter;
for (byte i = 0; i < mfrc522[reader].uid.size; i++)
{
//Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
//Serial.print(mfrc522.uid.uidByte[i], HEX);
RFIDtag.concat(String(mfrc522[reader].uid.uidByte[i] < 0x10 ? " 0" : " "));
RFIDtag.concat(String(mfrc522[reader].uid.uidByte[i], HEX));
}
// Serial.println();
//Serial.print("Message : ");
RFIDtag.toUpperCase();
/*
Serial.print("UID :");
Serial.println(RFIDtag);
Serial.println("----------------");
*/
/*
Serial.print("PREV UID :");
Serial.print(p_scanned_uid_code);
Serial.print(" >>>>>>>>>> ");
*/
//Serial.println(RFIDtag);
if ( RFIDtag.substring(1) == "73 A0 87 1C" && RFIDtag.substring(1) != p_scanned_uid_code )
{
Serial.print ("CARD 1 on reader ");
Serial.println(reader);
Keyboard.write( 89 );
p_scanned_uid_code = "73 A0 87 1C";
}
if ( RFIDtag.substring(1) == "F3 AB 79 1C" && RFIDtag.substring(1) != p_scanned_uid_code )
{
Serial.print ("CARD 2 on reader ");
Serial.println(reader);
Keyboard.write( 66 );
p_scanned_uid_code = "F3 AB 79 1C";
}
} //if (mfrc522[reader].PICC_IsNewC
else {
// no new card found and read
//Serial.println("no valid tag present!");
}
// Halt PICC
//mfrc522[reader].PICC_HaltA();
// Stop encryption on PCD
//mfrc522[reader].PCD_StopCrypto1();
} //for(uint8_t reader
}
//----------------------------------
//----------------------------------
//----------------------------------
void dump_byte_array(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], HEX);
}
}
void checkReaders() {
boolean allworking = true;
Serial.println();
Serial.println("Checking all Readers!");
for (reader = 0; reader < NR_OF_READERS; reader++) {
delay(1);
mfrc522[reader].PCD_Init(ssPins[reader], RST_PIN); // Init each MFRC522 reader
byte verbyte = mfrc522[reader].PCD_ReadRegister(mfrc522[reader].VersionReg);
Serial.print(F("Reader "));
Serial.print(reader);
Serial.print(F(": "));
mfrc522[reader].PCD_DumpVersionToSerial();
if (verbyte != 0x92) {
allworking = false;
}
mfrc522[reader].PICC_HaltA();
mfrc522[reader].PCD_StopCrypto1();
}
if (allworking == false) {
Serial.println("There is a Problem!");
}
else {
Serial.println("Readers are working");
}
Serial.println();
}