I'm trying to check the presence a string value from a array and take some actions if it is there. This is for a RFID system. Below is the code that I used and it gives me the output as "found" all the time. Can you help me in this.
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
int readsuccess;
byte readcard[4];
char str[32] = "";
String StrUID;
bool result= false;
String tagid[] = {"37376B34","7AA29B1A","4BA65F2A" };
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
}
// --------------------------------------------------------------------
void loop() {
readsuccess = getid();
if(readsuccess){
Serial.println(StrUID);
delay(1000);
}
result= check();
if (result =true){
Serial.println("found");
}
}
// --------------------------------------------------------------------
int getid(){
if(!mfrc522.PICC_IsNewCardPresent()){
return 0;
}
if(!mfrc522.PICC_ReadCardSerial()){
return 0;
}
for(int i=0;i<4;i++){
readcard[i]=mfrc522.uid.uidByte[i]; //storing the UID of the tag in readcard
array_to_string(readcard, 4, str);
StrUID = str;
}
mfrc522.PICC_HaltA();
return 1;
}
// --------------------------------------------------------------------
void array_to_string(byte array[], unsigned int len, char buffer[])
{
for (unsigned int i = 0; i < len; i++)
{
byte nib1 = (array[i] >> 4) & 0x0F;
byte nib2 = (array[i] >> 0) & 0x0F;
buffer[i*2+0] = nib1 < 0xA ? '0' + nib1 : 'A' + nib1 - 0xA;
buffer[i*2+1] = nib2 < 0xA ? '0' + nib2 : 'A' + nib2 - 0xA;
}
buffer[len*2] = '\0';
}
bool check(){
for(int i=0;i<3;i++){
String tagno=tagid[i];
if (tagno == StrUID){
return true;
}
}
}