i connected 6 ID-12 rfid sensors together and used this code. however when an rfid tag is placed over a sensor i get no read. its not working. is there something wrong with my code or is there something else i need or cant the arduino cope.
int RFID1ResetPin = 13;
int RFID2ResetPin = 12;
int RFID3ResetPin = 11;
int RFID4ResetPin = 10;
int RFID5ResetPin = 9;
int RFID6ResetPin = 8;
//Register your RFID tags here
char tag1[13] = "1E009A4067A3";
char tag2[13] = "010230F28243";
char tag3[13] = "01023C013A04";
char tag4[13] = "01023101093A";
char tag5[13] = "01023C0A4376";
char tag6[13] = "01023C000E31";
char tag7[13] = "01023C0A3207";
char tag8[13] = "1A004116317C";
char tag9[13] = "1E009A81F9FC";
char tag10[13] = "1A004162261F";
void setup(){
Serial.begin(9600);
pinMode(RFID1ResetPin, OUTPUT);
pinMode(RFID2ResetPin, OUTPUT);
// digitalWrite(RFID1ResetPin, HIGH);
// //ONLY NEEDED IF CONTROLING THESE PINS - EG. LEDs
// pinMode(2, OUTPUT);
// pinMode(3, OUTPUT);
// pinMode(4, OUTPUT);
// pinMode(5, OUTPUT);
// pinMode(6, OUTPUT);
// pinMode(7, OUTPUT);
// pinMode(8, OUTPUT);
// pinMode(9, OUTPUT);
// pinMode(10, OUTPUT);
// pinMode(11, OUTPUT);
}
void loop(){
char tagString[13];
int index = 0;
boolean reading = false;
digitalWrite(RFID1ResetPin, HIGH);
delay(150);
while(Serial.available()){
int readByte = Serial.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
index = 0; //Set index back to 0
reading = false; //Set reading back to false
digitalWrite(RFID1ResetPin, LOW);
digitalWrite(RFID2ResetPin, HIGH);
delay(150);
while(Serial.available()){
int readByte = Serial.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
index = 0; //Set index back to 0
reading = false; //Set reading back to false
digitalWrite(RFID2ResetPin, LOW);
digitalWrite(RFID3ResetPin, HIGH);
delay(150);
while(Serial.available()){
int readByte = Serial.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
index = 0; //Set index back to 0
reading = false; //Set reading back to false
digitalWrite(RFID3ResetPin, LOW);
digitalWrite(RFID4ResetPin, HIGH);
delay(150);
while(Serial.available()){
int readByte = Serial.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
index = 0; //Set index back to 0
reading = false; //Set reading back to false
digitalWrite(RFID4ResetPin, LOW);
digitalWrite(RFID5ResetPin, HIGH);
delay(150);
while(Serial.available()){
int readByte = Serial.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
index = 0; //Set index back to 0
reading = false; //Set reading back to false
digitalWrite(RFID5ResetPin, LOW);
digitalWrite(RFID6ResetPin, HIGH);
delay(150);
while(Serial.available()){
int readByte = Serial.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
index = 0; //Set index back to 0
reading = false; //Set reading back to false
digitalWrite(RFID6ResetPin, LOW);
}
void checkTag(char tag[]){
///////////////////////////////////
//Check the read tag against known tags
///////////////////////////////////
if(strlen(tag) == 0) return; //empty, no need to contunue
if(compareTag(tag, tag1)){ // if matched tag1, do this
lightLED(2);
}else if(compareTag(tag, tag2)){ //if matched tag2, do this
lightLED(3);
}else if(compareTag(tag, tag3)){
lightLED(4);
}else if(compareTag(tag, tag4)){
lightLED(5);
}else if(compareTag(tag, tag5)){
lightLED(6);
}else if(compareTag(tag, tag6)){
lightLED(7);
}else if(compareTag(tag, tag7)){
lightLED(8);
}else if(compareTag(tag, tag8)){
lightLED(9);
}else if(compareTag(tag, tag9)){
lightLED(10);
}else if(compareTag(tag, tag10)){
lightLED(11);
}else{
Serial.println(tag); //read out any unknown tag
}
}
void lightLED(int pin){
///////////////////////////////////
//Turn on LED on pin "pin" for 250ms
///////////////////////////////////
Serial.println(pin);
digitalWrite(pin, HIGH);
delay(250);
digitalWrite(pin, LOW);
}
void resetReader(){
///////////////////////////////////
//Reset the RFID reader to read again.
///////////////////////////////////
digitalWrite(RFID1ResetPin, LOW);
digitalWrite(RFID1ResetPin, 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 = 0;
- }*
}
boolean compareTag(char one[], char two[]){
///////////////////////////////////
//compare two value to see if same,
//strcmp not working 100% so we do this
/////////////////////////////////// - if(strlen(one) == 0) return false; //empty*
- for(int i = 0; i < 12; i++){*
if(one != two*) return false;*
* }*
* return true; //no mismatches*
}