Hi, the code below compile correctly but the problem is that when I pass the card on the reader: the number of the card show up 2 times on the monitor and I need to solve this problem . it has to be shown just one time:
#include <SoftwareSerial.h>
#define RFIDEnablePin 9
#define RFIDSerialRate 2400
#define RxPin 10
#define TxPin 10
SoftwareSerial RFIDReader(RxPin,TxPin);
String RFIDTAG="";
String DisplayTAG = "";
String klasse1 [2] = {"7A00631EA3","2700B9FCA6"};
String klasse2 [2] = {"0415C4746F","0415C49D56"};
int ledR = 13;
int ledG = 12;
int ledY = 2;
int berechtigung = 0;
String anzeige;
void setup()
{
RFIDReader.begin(RFIDSerialRate);
pinMode(RFIDEnablePin,OUTPUT);
pinMode(ledR, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(ledY, OUTPUT);
digitalWrite(RFIDEnablePin, LOW);
Serial.begin(9600);
Serial.println("Schleuse betriebsbereit!");
}
void loop()
{
if(RFIDReader.available() > 0)
{
ReadSerial(RFIDTAG);
}
anzeige = RFIDTAG;
for (int i = 0;i<2;i++) // für Klasse 1
{
if (klasse1[i] == RFIDTAG)
{
RFIDTAG = "";
berechtigung = 1;
}
}
for (int i = 0;i<2;i++) // für Klasse 2
{
if (klasse2[i] == RFIDTAG)
{
berechtigung = 2;
RFIDTAG = "";
}
}
if (RFIDTAG != "")
{
berechtigung = 3;
RFIDTAG = "";
}
if (berechtigung==1)
{
Serial.println("Zutritt ohne Weste "+anzeige);
digitalWrite(ledY, LOW);
digitalWrite(ledR, LOW);
digitalWrite(ledG, HIGH);
delay(2000);
berechtigung = 0;
}
if (berechtigung==2)
{
Serial.println("Zutritt mit Weste "+anzeige );
digitalWrite(ledY, HIGH);
digitalWrite(ledR, LOW);
digitalWrite(ledG, HIGH);
delay(2000);
berechtigung = 0;
}
if (berechtigung==3)
{
Serial.println("kein Zutritt "+anzeige);
digitalWrite(ledY, LOW);
digitalWrite(ledR, HIGH);
digitalWrite(ledG, LOW);
delay(2000);
berechtigung = 0;
}
if (berechtigung==0)
{
digitalWrite(ledY, HIGH);
digitalWrite(ledR, LOW);
digitalWrite(ledG, LOW);
}
}
void ReadSerial(String &ReadTagString)
{
int bytesread = 0;
int val = 0;
char code[10];
String TagCode="";
if(RFIDReader.available() > 0) {
if((val = RFIDReader.read()) == 10) {
bytesread = 0;
while(bytesread<10) {
if( RFIDReader.available() > 0) {
val = RFIDReader.read();
if((val == 10)||(val == 13)) {
break;
}
code[bytesread] = val;
bytesread++;
}
}
if(bytesread == 10) {
for(int x=0;x<10;x++)
{
TagCode += code[x];
}
ReadTagString = TagCode;
while(RFIDReader.available() > 0)
{
RFIDReader.read();
}
}
bytesread = 0;
TagCode="";
}
}
}