Hi,
i need a small programming help. i know only real basic about C++ programming. I've been trying to do it on my own since last week, but i'm unable to do it.. Help please.
In the practical arduino book, there's these 2 arrays
Code: Select all
// The tag database consists of two parts. The first part is an array of
// tag values with each tag taking up 5 bytes. The second is a list of
// names with one name for each tag (ie: group of 5 bytes).
char* allowedTags[] = {
"0104F5B523", // Tag 1
"04146E8BDD", // Tag 2
"0413BBBF23", // Tag 3
};
// List of names to associate with the matching tag IDs
char* tagName[] = {
"Jonathan Oxer", // Tag 1
"Hugh Blemings", // Tag 2
"Dexter D Dog", // Tag 3
};
// Check the number of tags defined
int numberOfTags = sizeof(allowedTags)/sizeof(allowedTags[0]);
I want to add this "database" array to the code found at
http://tronixstuff.com/2013/11/19/ardui ... r-15-rfid/.
Code: Select all
#include <SoftwareSerial.h>
SoftwareSerial RFID(2, 3); // RX and TX
int data1 = 0;
int ok = -1;
int yes = 13;
int no = 12;
// use first sketch in http://wp.me/p3LK05-3Gk to get your tag numbers
int tag1[11] = {49, 50, 48, 48, 48, 55, 49, 50, 51, 57, 13};
int tag2[11] = {2,52,48,48,48,56,54,67,54,54,66};
int newtag[11] = { 0,0,0,0,0,0,0,0,0,0,0}; // used for read comparisons
void setup()
{
RFID.begin(9600); // start serial to RFID reader
Serial.begin(9600); // start serial to PC
pinMode(yes, OUTPUT); // for status LEDs
pinMode(no, OUTPUT);
}
boolean comparetag(int aa[11], int bb[11])
{
boolean ff = false;
int fg = 0;
for (int cc = 0 ; cc < 11 ; cc++)
{
if (aa[cc] == bb[cc])
{
fg++;
}
}
if (fg == 11)
{
ff = true;
}
return ff;
}
void checkmytags() // compares each tag against the tag just read
{
ok = 0; // this variable helps decision-making,
// if it is 1 we have a match, zero is a read but no match,
// -1 is no read attempt made
if (comparetag(newtag, tag1) == true)
{
ok++;
}
if (comparetag(newtag, tag2) == true)
{
ok++;
}
}
void readTags()
{
ok = -1;
if (RFID.available() > 0)
{
// read tag numbers
delay(100); // needed to allow time for the data to come in from the serial buffer.
for (int z = 0 ; z < 11 ; z++) // read the rest of the tag
{
data1 = RFID.read();
newtag[z] = data1;
}
RFID.flush(); // stops multiple reads
// do the tags match up?
checkmytags();
}
// now do something based on tag type
if (ok > 0) // if we had a match
{
Serial.println("Accepted");
digitalWrite(yes, HIGH);
delay(1000);
digitalWrite(yes, LOW);
ok = -1;
}
else if (ok == 0) // if we didn't have a match
{
Serial.println("Rejected");
digitalWrite(no, HIGH);
delay(1000);
digitalWrite(no, LOW);
ok = -1;
}
}
void loop()
{
readTags();
}
I need it to be like when the card is read, (49 50 48 48 48 55 49 50 51 57 13 my card), it looks for the number (49 50 48 48 48 55 49 50 51 57 13) in the database array.
if number found in array, it Serial.println welcome to the corresponding user found in the tagName array. ; sends high to yes. else if number not found, it sends high to no.
I want it in this database format so that i can add users easily ( many users) , and also so that it prints the corresponding name of the tag's user. in the code above, i can't add users from time to time.
Please help friends..
Thanks in advance