//The number of keys to check for. static int KEY_NUM = 3; //Accepted keys. static long KEYS[] = { -881179883, //Ben -881179695, //Helen -814070751 //Jordan //-881188651 //Gina }; volatile long current = 0; volatile boolean changed = false; void DATA1() { //Shift bits left; add one current = current << 1; current += 1; changed = true; Serial.print(1); } void DATA0() { //Shift bits left; (add zero) current = current << 1; changed = true; Serial.print(0); } void CARD() { Serial.println(); } void check() { for (int i = 0; i < KEY_NUM; i++) { if (KEYS[i] == current) { unlock(); } } } void unlock() { Serial.println("Match!"); } void setup() { Serial.begin(9600); attachInterrupt(0, DATA0, FALLING); // DATA0 (green) on HID reader, Pin 2 on Arduino attachInterrupt(1, DATA1, FALLING); // DATA1 (white) on HID reader, Pin 3 on Arduino delay(10); } void loop() { delay(100); if (changed) { check(); Serial.println(); Serial.println(current); } changed = false; }