I have built the hardware, and after some trial and erron, I'm starting to get the code working, the reading and identification of the tags is working, buzzer is beeping and leds are blinking

Some pictures of the shield, with the coil for the reader temporary taped to the board, and user 2 logged in


and the back of it, with some wires. :


the next bug to resolve is that after reading a tag, the software sort of locks up, and reports any tag that gets read to be the same ID as the first tag...
I will attach the code, so if anyone with more understanding of this can take a look at it

the code is based of
THIS CODE//RFID Clothes Dryer
#include <SoftwareSerial.h>
#define rxPin 2
#define txPin 3
SoftwareSerial mySerial= SoftwareSerial(rxPin, txPin);
int buzzPin = 5; //buzzer
int led1Pin = 6; //user 1
int led2Pin = 7; //user 2
int led3Pin = 8; //user 3
int led4Pin = 9; //user 4
int doorPin = 12; //doorswitch
int startPin = 13; //start connected to pin 13
boolean open = true; // default start up is to assume the lock is open
int val = 0;
char code[12];
int bytesread = 0;
int pulse, switchVal;
//RFID tags
char tag1[13] = "390051A9ED2"; //user1
char tag2[13] = "39003A80D45"; //user2
char tag3[13] = "3900315FECB"; //user3
char tag4[13] = "390031587D2"; //user4
char tag5[13] = "24004D4AF5D"; //delete
char tag6[13] = "24004D31174"; //read
void LED(int state){
switch (state){
case 1: //user 1 LED on
digitalWrite(led1Pin, HIGH);
break;
case 2: //user 2 LED on
digitalWrite(led2Pin, HIGH);
break;
case 3: //user 3 LED on
digitalWrite(led3Pin, HIGH);
break;
case 4: //user 4 LED on
digitalWrite(led4Pin, HIGH);
break;
case 5: //user 1 LED blink
digitalWrite(led1Pin, HIGH);
delay(500);
digitalWrite(led1Pin, LOW);
delay(500);
break;
case 6: //user 2 LED blink
digitalWrite(led2Pin, HIGH);
delay(500);
digitalWrite(led2Pin, LOW);
delay(500);
break;
case 7: //user 3 LED blink
digitalWrite(led3Pin, HIGH);
delay(500);
digitalWrite(led3Pin, LOW);
delay(500);
break;
case 8: //user 4 LED blink
digitalWrite(led4Pin, HIGH);
delay(500);
digitalWrite(led4Pin, LOW);
delay(500);
break;
case 9: //all LED blink
for (long i = 0; i < 2048 * 1; i++ )
{
digitalWrite(led1Pin, HIGH);
digitalWrite(led2Pin, HIGH);
digitalWrite(led3Pin, HIGH);
digitalWrite(led4Pin, HIGH);
delay(300);
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
digitalWrite(led4Pin, LOW);
delay(300);
}
break;
break;
case 10: //all LED blink fast
for (long i = 0; i < 2048 * 1; i++ )
{
digitalWrite(led1Pin, HIGH);
digitalWrite(led2Pin, HIGH);
digitalWrite(led3Pin, HIGH);
digitalWrite(led4Pin, HIGH);
delay(150);
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
digitalWrite(led4Pin, LOW);
delay(150);
}
break;
}
}
void user(int state){
switch (state){
case 1: //user 1
beep(2);
LED(1);
Serial.print("User 1");
break;
case 2: //user 2
beep(2);
LED(2);
Serial.print("User 2");
break;
case 3: //user 3
beep(2);
LED(3);
Serial.print("User 3");
break;
case 4: //user 4
beep(2);
LED(4);
Serial.print("User 4");
break;
case 5: //delete
beep(2);
LED(9);
Serial.print("Delete");
break;
case 6: //read
beep(2);
Serial.print("Read");
break;
}
}
void beep(int state){
switch (state){
case 1: //long beep, bad tag
for (long i = 0; i < 2048 * 1; i++ )
{
digitalWrite(buzzPin, HIGH);
delayMicroseconds(244);
digitalWrite(buzzPin, LOW);
delayMicroseconds(244);
}
break;
case 2: //short beep, good tag
for (long i = 0; i < 1024 * 1; i++ )
{
digitalWrite(buzzPin, HIGH);
delayMicroseconds(122);
digitalWrite(buzzPin, LOW);
delayMicroseconds(122);
}
}
}
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
pinMode (buzzPin, OUTPUT);
pinMode (led1Pin, OUTPUT);
pinMode (led2Pin, OUTPUT);
pinMode (led3Pin, OUTPUT);
pinMode (led4Pin, OUTPUT);
pinMode (doorPin, INPUT);
pinMode (startPin, OUTPUT);
}
boolean checkTag(char *tag){
for (int x=0;x<11;x++){
if( tag[x] != code[x]){
return false;
}
}
return true;
}
boolean findGoodTag(){
if (checkTag(tag1)){ user(1); return true;}
else if (checkTag(tag2)){ user(2); return true;}
else if (checkTag(tag3)){ user(3); return true;}
else if (checkTag(tag4)){ user(4); return true;}
else if (checkTag(tag5)){ user(5); return true;}
else if (checkTag(tag6)){ user(6); return true;}
else{
Serial.print("Bad tag: ");
Serial.println(code);
beep(1);
LED(10);
return false;
}}
void loop(){
SoftwareSerial RFID = SoftwareSerial(rxPin,txPin);
RFID.begin(9600);
if((val = RFID.read()) == 11)
bytesread = 0;
while(bytesread<11)
{ // read 12 digit code
val = RFID.read();
if((val == 11)||(val == 12))
{ // if header or stop bytes before the 11 digit reading
break; // stop reading
}
code[bytesread] = val; // add the digit
bytesread++; // ready to read next digit
}
if((bytesread == 11) && (findGoodTag()))
{ // if 11 digit read is complete
delay(500);
}}