Ceci est une ancienne révision du document !
—-
ID-12LA fonctionne jusqu'à environ 2.5 cm de distance.
Le rafraîchissement des données se fait à environ 8Hz.
Liens :
http://bildr.org/2011/02/rfid-arduino/ https://hcgilje.wordpress.com/resources/rfid_id12_tagreader/ Raspberry
Datasheet :
http://cdn.sparkfun.com/datasheets/Sensors/ID/ID-2LA,%20ID-12LA,%20ID-20LA2013-4-10.pdf
Attention au conflit de port sur l'entrée RX 0.
Il faut débrancher le port 0 pour téléverser le programme.
Pour cette raison, j'ai utilisé la librairie SoftwareSerial pour éviter ce problème.
Si 2 tags sont en même temps cela ne fonctionne pas !
/* * Author : http://bildr.org/2011/02/rfid-arduino/ and Colin Bouvry */ #include <SoftwareSerial.h> const int RFIDResetPin = 13; // software serial #2: RX = digital pin 8, TX = digital pin 9 // on the Mega, use other pins instead, since 8 and 9 don't work on the Mega SoftwareSerial portId12LA(8, 9); void setup(){ Serial.begin(9600); portId12LA.begin(9600); pinMode(RFIDResetPin, OUTPUT); digitalWrite(RFIDResetPin, HIGH); } void loop(){ char tagString[13]; int index = 0; boolean reading = false; portId12LA.listen(); while(portId12LA.available()){ int readByte = portId12LA.read(); //read next available byte if(readByte == 2) reading = true; //begining of tag if(readByte == 3) reading = false; //end of tag if(reading && readByte != 2 && readByte != 10 && readByte != 13){ //store the tag tagString[index] = readByte; index ++; } } checkTag(tagString); //Check if it is a match clearTag(tagString); //Clear the char of all value resetReader(); //eset the RFID reader } void checkTag(char tag[]){ /////////////////////////////////// //Check the read tag against known tags /////////////////////////////////// if(strlen(tag) == 0) return; //empty, no need to contunue Serial.println(tag); //read out any unknown tag } void resetReader(){ /////////////////////////////////// //Reset the RFID reader to read again. /////////////////////////////////// digitalWrite(RFIDResetPin, LOW); digitalWrite(RFIDResetPin, HIGH); delay(150); } void clearTag(char one[]){ /////////////////////////////////// //clear the char array by filling with null - ASCII 0 //Will think same tag has been read otherwise /////////////////////////////////// for(int i = 0; i < strlen(one); i++){ one[i] = 0; } }