No idea if this is still any use to you...
So, only althogh 125kHz, only Indala cards will work, and they'll need to have been programmed to suit the programming of your reader.
The reader programming is usually indicated by a number appended to the model number.
This is the first successful test I had:
volatile unsigned long reader1 = 0;
volatile int reader1Count = 0;
volatile int overallCount = 0;
void reader1One(void) {
reader1Count++;
reader1 = reader1 << 1;
reader1 |= 1;
}
void reader1Zero(void) {
reader1Count++;
reader1 = reader1 << 1;
}
void setup()
{
Serial.begin(9600);
attachInterrupt(0, reader1Zero, RISING);//DATA0 to pin 2
attachInterrupt(1, reader1One, RISING); //DATA1 to pin 3
delay(10);
for(int i = 2; i<4; i++){
pinMode(i, OUTPUT);
digitalWrite(i, HIGH);
digitalWrite(i, LOW);
pinMode(i, INPUT);
digitalWrite(i, HIGH);
}
delay(10);
reader1 = 0;
reader1Count = 0;
}
void loop()
{
if(reader1Count >=34){
int serialNumber=(reader1 >> 7) & 0x3fff;
int siteCode= (reader1 >> 21) & 0x1ff;
Serial.print("Site code: ");
Serial.println(siteCode);
Serial.print("Card No: ");
Serial.println(serialNumber);
reader1 = 0;
reader1Count = 0;
}
}
But this is specific to the particular programming mine has. But it essentially pulls one of the two data lines (green and white on mine) high to correspond to 1s and 0s - a total of 34 bits in my case, buried in there is the sitecode and card number.