hi guys, need help in this project
code]
#include <NewSoftSerial.h>
#include <EEPROM.h>
char rfid_data[10];
char rfid_in[10];
int i, a, b, tmp;
NewSoftSerial rfid (10, 255);
void setup()
{
Serial.begin(9600);
RFID.begin(2400);
pinMode(11, OUTPUT);
}
void loop()
{
Serial.println("1 = Register RFID Card");
Serial.println("2 = Remove RFID Card");
Serial.println("3 = Delete EEPROM Database");
Serial.println("4 = List EEPROM Database");
Serial.println("5 = Active Mode");
do
{
delay(200);
}
while (Serial.available() <= 0);
Serial.println();
switch (Serial.read())
{
case '1':
RegisterCard();
break;
case '2':
RemoveCard();
break;
case '3':
EEPROM.write(0,0);
Serial.println("Database Erased");
break;
case '4':
ListDatabase();
break;
case '5':
ActiveMode();
break;
case '0':
break;
default:
Serial.println("Uknown Input");
}
Serial.println();
}
void RegisterCard()
{
// Read a card
for (int rs = 0; rs < 11; rs++)
{
rfid_data[rs] = '0';
}
rfid_data[10] = '\0';
digitalWrite(11, LOW);
delay(500);
do
{
delay(200);
}
while (RFID.available() <= 0);
digitalWrite(11, HIGH);
delay(500);
Serial.println("Reading Card");
rfid_data[0] = RFID.read();
if (int(rfid_data[0]) == 10)
{
for (i = 0; i < 10; i++)
{
rfid_data[i] = RFID.read();
}
rfid_data[10] = '\0';
}
RFID.flush();
delay(500);
/*
digitalWrite(11, LOW);
delay(500);
digitalWrite(11, HIGH);
delay(500);
*/
Serial.print("Registering Card: ");
Serial.println(rfid_data);
// Check if it's in the database
a = EEPROM.read(0);
if (a == 0)
{
EEPROM.write(0,1);
for (i = 1; i < 11; i++)
{
EEPROM.write(i,rfid_data[i-1]);
}
Serial.println("Card Registered in Database Successfully");
// REMOVE START
for (i = 0; i < 11; i++)
{
rfid_data[i] = '0';
}
rfid_data[11] = '\0';
// REMOVE END
return;
}
if (a == 100)
{
Serial.println("100 Cards Reached, Register Failed");
return;
}
for (i = 0; i < a; i++)
{
for (b = 1; b < 11; b++)
{
rfid_in[b-1] = EEPROM.read((i*10)+b);
}
rfid_data[10] = '\0';
b = 1;
for (int c = 0; c < 10; c++)
{
if (rfid_data[c] == rfid_in[c])
{
b++;
}
}
if (b == 10)
{
Serial.println("Card Already Exists in Database");
return;
}
}
// Add to database
tmp = 0;
for (int d = (a*10)+1; d < (a*10)+11; d++)
{
EEPROM.write(d,rfid_data[tmp]);
tmp++;
}
EEPROM.write(0,a+1);
Serial.println("Complete");
return;
}
void ListDatabase()
{
a = EEPROM.read(0);
Serial.print("Cards in database: ");
Serial.println(a);
if (a == 0)
{
Serial.println("Database Empty");
return;
}
for (i = 0; i < a; i++)
{
Serial.print("Card ");
Serial.print(i);
Serial.print(": ");
for (b = 1; b < 11; b++)
{
Serial.print(EEPROM.read((i*10)+b));
}
Serial.println();
}
return;
}
void ActiveMode()
{
// Read a card
for (int rs = 0; rs < 11; rs++)
{
rfid_data[rs] = '0';
}
rfid_data[10] = '\0';
digitalWrite(11, LOW);
delay(500);
do
{
delay(200);
}
while (RFID.available() <= 0);
digitalWrite(11, HIGH);
delay(500);
Serial.println("Reading Card");
rfid_data[0] = RFID.read();
if (int(rfid_data[0]) == 10)
{
for (i = 0; i < 10; i++)
{
rfid_data[i] = RFID.read();
}
rfid_data[10] = '\0';
}
Serial.print("Checking Card: ");
Serial.println(rfid_data);
// Check if it's in the database
a = EEPROM.read(0);
if (a == 0)
{
Serial.println("Access Denied!");
RFID.flush();
delay(1000);
digitalWrite(11, LOW);
delay(500);
digitalWrite(11, HIGH);
return;
}
for (i = 0; i < a; i++)
{
for (b = 1; b < 11; b++)
{
rfid_in[b-1] = EEPROM.read((i*10)+b);
}
rfid_data[10] = '\0';
b = 1;
for (int c = 0; c < 10; c++)
{
if (rfid_data[c] == rfid_in[c])
{
b++;
}
}
if (b == 10)
{
Serial.println("Access Granted!");
RFID.flush();
delay(1000);
digitalWrite(11, LOW);
delay(500);
digitalWrite(11, HIGH);
return;
}
}
Serial.println("Access Denied!");
RFID.flush();
delay(1000);
digitalWrite(11, LOW);
delay(500);
digitalWrite(11, HIGH);
return;
}
void RemoveCard()
{
// Read a card
for (int rs = 0; rs < 11; rs++)
{
rfid_data[rs] = '0';
}
rfid_data[10] = '\0';
digitalWrite(11, LOW);
delay(500);
do
{
delay(200);
}
while (RFID.available() <= 0);
digitalWrite(11, HIGH);
delay(500);
Serial.println("Reading Card");
rfid_data[0] = RFID.read();
if (int(rfid_data[0]) == 10)
{
for (i = 0; i < 10; i++)
{
rfid_data[i] = RFID.read();
}
rfid_data[10] = '\0';
}
RFID.flush();
delay(800);
Serial.print("Removing Card: ");
Serial.println(rfid_data);
// Check if it's in the database
a = EEPROM.read(0);
if (a == 0)
{
Serial.println("Not in Database");
return;
}
for (i = 0; i < a; i++)
{
for (b = 1; b < 11; b++)
{
rfid_in[b-1] = EEPROM.read((i*10)+b);
}
rfid_data[10] = '\0';
b = 1;
for (int c = 0; c < 10; c++)
{
if (rfid_data[c] == rfid_in[c])
{
b++;
}
}
if (b == 10)
{
int rmstrt = ((i*10)+b)-9;
// Last in database?
if ((a*10) == (rmstrt+9))
{
EEPROM.write(0,a-1);
Serial.println("Card Removed Successfully!");
return;
}
for (tmp = rmstrt+10; tmp < (a*10)+1; tmp++)
{
char dta = EEPROM.read(tmp);
delay(100);
EEPROM.write(rmstrt,dta);
rmstrt++;
}
delay(100);
EEPROM.write(0,a-1);
Serial.println("Card Removed Successfully!");
return;
}
}
Serial.println("Card Not in Database");
return;
}
So aside from it not compiling, what does it do or not do?
There is no error with NewSoftwareSerial and you are using it correctly if you have an arduino with a pin number 255.