A Little Help on this Code Please #RFID #Traffic Lights

Dear Friends,

I am working on my School Project called " Emergency Traffic Lights Using RFID".

I have Trouble , The Traffic light sequence is running normally but when ever i place the RFID Tag it does not change to the 1 Green and 3 Red.

Any Assistance will be grateful Thank You

[#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 53
#define RST_PIN 22
#define ACCESS_DELAY 2000
#define DENIED_DELAY 1000
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.

int g1 = 2;
int y1 = 3;
int r1 = 4;
int g2 = 5;
int y2 = 6;
int r2 = 7;
int g3 = 8;
int y3 = 9;
int r3 = 10;
int g4 = 11;
int y4 = 12;
int r4 = 13;

void setup()
{
 pinMode (r1, OUTPUT);
 pinMode (y1, OUTPUT);
 pinMode (g1, OUTPUT);
 pinMode (r2, OUTPUT);
 pinMode (y2, OUTPUT);
 pinMode (g2, OUTPUT);
 pinMode (r3, OUTPUT);
 pinMode (y3, OUTPUT);
 pinMode (g3, OUTPUT);
 pinMode (r4, OUTPUT);
 pinMode (y4, OUTPUT);
 pinMode (g4, OUTPUT);
 Serial.begin(9600);   // Initiate a serial communication
 SPI.begin();          // Initiate  SPI bus
 mfrc522.PCD_Init();   // Initiate MFRC522



}
void loop()
{
 digitalWrite(g1, HIGH);
 digitalWrite(r2, HIGH);
 digitalWrite(r3, HIGH);
 digitalWrite(r4, HIGH);
 delay(10000);

 digitalWrite(g1, LOW);

 digitalWrite(y1, HIGH);
 digitalWrite(r2, HIGH);
 digitalWrite(r3, HIGH);
 digitalWrite(r4, HIGH);
 delay(3000);

 digitalWrite(y1, LOW);
 digitalWrite(r2, LOW);

 digitalWrite(r1, HIGH);
 digitalWrite(g2, HIGH); //2nd light
 digitalWrite(r3, HIGH);
 digitalWrite(r4, HIGH);
 delay(10000);

 digitalWrite(g2, LOW);

 digitalWrite(y2, HIGH);
 digitalWrite(r1, HIGH);
 digitalWrite(r3, HIGH);
 digitalWrite(r4, HIGH);
 delay(3000);

 digitalWrite(y2, LOW);
 digitalWrite(r3, LOW);

 digitalWrite(g3, HIGH); //3rd light
 digitalWrite(r1, HIGH);
 digitalWrite(r2, HIGH);
 digitalWrite(r4, HIGH);
 delay(10000);

 digitalWrite(g3, LOW);


 digitalWrite(y3, HIGH);
 digitalWrite(r1, HIGH);
 digitalWrite(r2, HIGH);
 digitalWrite(r4, HIGH);
 delay(3000);

 digitalWrite(y3, LOW);
 digitalWrite(r3, LOW);
 digitalWrite(r4, LOW);

 digitalWrite(g4, HIGH); //4th light
 digitalWrite(r1, HIGH);
 digitalWrite(r2, HIGH);
 digitalWrite(r3, HIGH);
 delay(10000);

 digitalWrite(g4, LOW);
 digitalWrite(r4, LOW);


 digitalWrite(y4, HIGH);
 digitalWrite(r1, HIGH);
 digitalWrite(r2, HIGH);
 digitalWrite(r3, HIGH);
 delay(3000);

 digitalWrite(y4, LOW);
 digitalWrite(r4, LOW);
 digitalWrite(r1, LOW);

 // Look for new cards
 if ( ! mfrc522.PICC_IsNewCardPresent())
 {
   return;
 }
 // Select one of the cards
 if ( ! mfrc522.PICC_ReadCardSerial())
 {
   return;
 }
 //Show UID on serial monitor
 Serial.print("UID tag :");
 String content = "";
 byte letter;
 for (byte i = 0; i < mfrc522.uid.size; i++)
 {
   Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
   Serial.print(mfrc522.uid.uidByte[i], HEX);
   content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
   content.concat(String(mfrc522.uid.uidByte[i], HEX));
 }
 Serial.println();
 Serial.print("Message : ");
 content.toUpperCase();
 if (content.substring(1) == "C2 DF 8A 1C") //change here the UID of the card
 {
   Serial.println("Authorized access");
   Serial.println();
   digitalWrite(r1, HIGH);
   digitalWrite(r2, HIGH);
   digitalWrite(g3, HIGH);
   digitalWrite(r4, HIGH);
   delay(1000);

 }

 else   {
   Serial.println(" Access denied");


   delay(DENIED_DELAY);


 }
}]

After reading How to use this forum, please edit your post to add code tags.

jremington:
After reading How to use this forum, please edit your post to add code tags.

Thank you
Edited correctly now

Do think all the delays might have something to do with your problem? There are better ways, if you want something to happen while the program has been stopped by delays.

Paul

The Blink Without Delay example should give you some idea about how to write a responsive program. Explained here.

Paul_KD7HB:
Do think all the delays might have something to do with your problem? There are better ways, if you want something to happen while the program has been stopped by delays.

Paul

I will try with millis() if delay is causing the problem,

Which function should I use to Start Emergency Traffic Lights when RFID is Triggered and after a delay it should go back to Normal traffic Lights (Used If Else Here)

delay() IS the problem.

kkt890:
I will try with millis() if delay is causing the problem,

Which function should I use to Start Emergency Traffic Lights when RFID is Triggered and after a delay it should go back to Normal traffic Lights (Used If Else Here)

If you are going to use "millis()" and the blink without delay logic, you need to completely redesign your program.

Paul