RFID Lock con Reader Weigang 26 Bit

Hola a todos, de alguna lugar encontré este código para usarlo con Arduino uno en el proyecto de un Cierre para puerta a travez de un relay, el mismo me esta funcionando perfectamente hasta que le trato de agregar una segunda llave, cuando le agrego mas de una abre el relay con cualquiera hago, adjunto les dejo el Código para ver si me pudieran ayudar a corregirlo, gracias a todos. Nota: El código de tarjeta le puse 12345.

#define MAX_BITS 100 // max number of bits
#define WEIGAND_WAIT_TIME 3000 // time to wait for another weigand pulse.

unsigned char databits[MAX_BITS]; // stores all of the data bits
unsigned char bitCount; // number of bits currently captured
unsigned char flagDone; // goes low when data is currently being captured
unsigned int weigand_counter; // countdown until we assume there are no more bits

unsigned long facilityCode=0; // decoded facility code
unsigned long cardCode=0; // decoded card code

int LED_GREEN = 11; // pata S del Relay
int LED_RED = 12; // Green Light (Orange cable HID)
int BEEP_BEEP = 10;

// interrupt that happens when INTO goes low (0 bit)
void ISR_INT0() {
//Serial.print("0"); // uncomment this line to display raw binary
bitCount++;
flagDone = 0;
weigand_counter = WEIGAND_WAIT_TIME;

}

// interrupt that happens when INT1 goes low (1 bit)
void ISR_INT1() {
//Serial.print("1"); // uncomment this line to display raw binary
databits[bitCount] = 1;
bitCount++;
flagDone = 0;
weigand_counter = WEIGAND_WAIT_TIME;
}

void setup() {
pinMode(LED_RED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(BEEP_BEEP, OUTPUT);
digitalWrite(LED_RED, HIGH); // High = Off
digitalWrite(BEEP_BEEP, HIGH); // High = off
digitalWrite(LED_GREEN, LOW); // Low = On
pinMode(2, INPUT); // DATA0 (INT0)
pinMode(3, INPUT); // DATA1 (INT1)

Serial.begin(9600);
Serial.println("RFID Readers");

// binds the ISR functions to the falling edge of INTO and INT1
attachInterrupt(0, ISR_INT0, FALLING);
attachInterrupt(1, ISR_INT1, FALLING);

weigand_counter = WEIGAND_WAIT_TIME;
}

void loop()
{
// This waits to make sure that there have been no more data pulses before processing data
if (!flagDone) {
if (--weigand_counter == 0)
flagDone = 1;
}

// if we have bits and we the weigand counter went out
if (bitCount > 0 && flagDone) {
unsigned char i;

Serial.print("Read ");
Serial.print(bitCount);
Serial.print(" bits. ");

if (bitCount == 35) {
// 35 bit HID Corporate 1000 format
// facility code = bits 2 to 14
for (i=2; i<14; i++) {
facilityCode <<=1;
facilityCode |= databits*;*

  • }*

  • // card code = bits 15 to 34*

  • for (i=14; i<34; i++) {*

  • cardCode <<=1;*
    _ cardCode |= databits*;_
    _
    }*_

* printBits();*
* }*
* else if (bitCount == 26) {*
* // standard 26 bit format*
* // facility code = bits 2 to 9*
* for (i=1; i<9; i++) {*
* facilityCode <<=1;*
_ facilityCode |= databits*;
}*_

* // card code = bits 10 to 23*
* for (i=9; i<25; i++) {*
* cardCode <<=1;*
_ cardCode |= databits*;
}*_

* printBits(); *
* }*
* else {*
* // you can add other formats if you want!*
* // Serial.println("Unable to decode.");*
* }*

* // cleanup and get ready for the next card*
* bitCount = 0;*
* facilityCode = 0;*
* cardCode = 0;*
* for (i=0; i<MAX_BITS; i++)
_ {
databits = 0;
}
}
}*_

void printBits() {
* Serial.print("FC = ");*
* Serial.print(facilityCode);*
* Serial.print(", CC = ");*
* Serial.println(cardCode);*

* // Codes Cards here------_-*

* digitalWrite(LED_RED, LOW); // Red*
* if(cardCode == 12345){*
* // If this one "bad" card, turn off green*
* // so it's just red. Otherwise you get orange-ish*
* digitalWrite(LED_GREEN, HIGH);
_ }
delay(3000); // time to Open door*_

* digitalWrite(LED_RED, HIGH); // Red Off*
* digitalWrite(LED_GREEN, LOW); // Green back on*

* // Lets be annoying and beep more*
* digitalWrite(BEEP_BEEP, LOW);
_ delay(100);_
digitalWrite(BEEP_BEEP, HIGH);
_ delay(100);_
digitalWrite(BEEP_BEEP, LOW);
_ delay(100);_
digitalWrite(BEEP_BEEP, HIGH);*

Por favor lee las normas del foro. Edita tu mensaje y ponlo completo entre las etiquetas code.