LCD doesn't work according to the code

LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
#include <Keypad.h>


// Length of password + 1 for null character
#define Password_Length 7
// Character to hold password input
char Data[Password_Length];
// Password
char Master[Password_Length] = "148536";
 
// Counter for character entries
byte data_count = 0;
 
// Character to hold key input
char customKey;
 
// Constants for row and column sizes
const byte ROWS = 4;
const byte COLS = 4;


// Connections to Arduino
byte rowPins[ROWS] = {28, 30, 32, 34};
byte colPins[COLS] = {36, 38, 40, 42};

const int S1E=A8;   ////////////////L1
const int S2E=A9;   ////////////////L2
const int S3E=A10;   ////////////////L3
const int S4E=A11;   ////////////////L4


int S11E=0;
int S12E=0;
int S13E=0;
int S14E=0;

int S1Ealert=1;
int S2Ealert=1;
int S3Ealert=1;
int S4Ealert=1;

const int L1G=2;   ////////////////L1-GREEN
const int L1O=3;   ////////////////L1-ORANGE
const int L1R=4;   ////////////////L1-RED

const int L2G=5;   ////////////////L2-GREEN
const int L2O=6;   ////////////////L2-ORANGE
const int L2R=7;   ////////////////L2-RED

const int L3G=14;   ////////////////L3-GREEN
const int L3O=15;   ////////////////L3-ORANGE
const int L3R=16;   ////////////////L3-RED

const int L4G=17;   ////////////////L4-GREEN
const int L4O=18;   ////////////////L4-ORANGE
const int L4R=19;   ////////////////L4-RED


/*const int L1A=22;   ////////////////L1-Stud Alert
const int L2A=23;   ////////////////L2-Stud Alert
const int L3A=24;   ////////////////L3-Stud Alert
const int L4A=25;   ////////////////L4-Stud Alert */

 
// Array to represent keys on keypad
char hexaKeys[ROWS][COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

// Create keypad object
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);


int aa=0;
void setup()
{
 
lcd.begin(16, 2); 

pinMode(S1E, INPUT);
pinMode(S2E, INPUT);
pinMode(S3E, INPUT);
pinMode(S4E, INPUT);

pinMode(L1G, OUTPUT);
pinMode(L1O, OUTPUT);
pinMode(L1R, OUTPUT);

pinMode(L2G, OUTPUT);
pinMode(L2O, OUTPUT);
pinMode(L2R, OUTPUT);

pinMode(L3G, OUTPUT);
pinMode(L3O, OUTPUT);
pinMode(L3R, OUTPUT);

pinMode(L4G, OUTPUT);
pinMode(L4O, OUTPUT);
pinMode(L4R, OUTPUT);


lcd.setCursor(0,0);
lcd.print("ADVANCED TRAFFIC ");
lcd.setCursor(0,1);
lcd.print("LANE CONTROL SYS "); 
delay(3000);


lcd.clear();
lcd.setCursor(0,0);
lcd.print("  DEVELOPED BY");
lcd.setCursor(0,1);
lcd.print(" U. RAMESH KUMAR"); 
//delay(3000);


digitalWrite(L1G, HIGH);digitalWrite(L1O, HIGH);digitalWrite(L1R, HIGH);//delay(10);
digitalWrite(L2G, HIGH);digitalWrite(L2O, HIGH);digitalWrite(L2R, HIGH);//delay(10);
digitalWrite(L3G, HIGH);digitalWrite(L3O, HIGH);digitalWrite(L3R, HIGH);//delay(10);
digitalWrite(L4G, HIGH);digitalWrite(L4O, HIGH);digitalWrite(L4R, HIGH);delay(1000);//delay(10);


digitalWrite(L1G, LOW);digitalWrite(L1O, LOW);digitalWrite(L1R, LOW);//delay(10);
digitalWrite(L2G, LOW);digitalWrite(L2O, LOW);digitalWrite(L2R, LOW);//delay(10);
digitalWrite(L3G, LOW);digitalWrite(L3O, LOW);digitalWrite(L3R, LOW);//delay(10);
digitalWrite(L4G, LOW);digitalWrite(L4O, LOW);digitalWrite(L4R, LOW);delay(2000);
//
lcd.clear();
lcd.setCursor(0,0);lcd.print("   NORMAL LANE  ");
lcd.setCursor(0,1);
lcd.print(" MOVEMENT ACTIVE  ");
}
void loop()
{
 if(aa==0)
 {
////////////////////////////////////////// FIRST LANE/////////////////////////////////////////////////////////
digitalWrite(L1R, LOW);digitalWrite(L1G, HIGH);digitalWrite(L2R, HIGH);digitalWrite(L3R, HIGH);digitalWrite(L4R, HIGH);delay(1000);
digitalWrite(L1G, LOW);digitalWrite(L1O, HIGH);delay(500);digitalWrite(L1O, LOW);digitalWrite(L1R, HIGH);
////////////////////////////////////////// second LANE/////////////////////////////////////////////////////////
digitalWrite(L2R, LOW);digitalWrite(L2G, HIGH);digitalWrite(L1R, HIGH);digitalWrite(L3R, HIGH);digitalWrite(L4R, HIGH);delay(1000);
digitalWrite(L2G, LOW);digitalWrite(L2O, HIGH);delay(500);digitalWrite(L2O, LOW);digitalWrite(L2R, HIGH);
////////////////////////////////////////// third LANE/////////////////////////////////////////////////////////
digitalWrite(L3R, LOW);digitalWrite(L3G, HIGH);digitalWrite(L2R, HIGH);digitalWrite(L1R, HIGH);digitalWrite(L4R, HIGH);delay(1000);
digitalWrite(L3G, LOW);digitalWrite(L3O, HIGH);delay(500);digitalWrite(L3O, LOW);digitalWrite(L3R, HIGH);
////////////////////////////////////////// Fourth LANE/////////////////////////////////////////////////////////
digitalWrite(L4R, LOW);digitalWrite(L4G, HIGH);digitalWrite(L2R, HIGH);digitalWrite(L3R, HIGH);digitalWrite(L1R, HIGH);delay(1000);
digitalWrite(L4G, LOW);digitalWrite(L4O, HIGH);delay(500);digitalWrite(L4O, LOW);digitalWrite(L4R, HIGH);
}
////////////////////////////////////////// cheking ambulance/////////////////////////////////////////////////////////
 
S1Ealert = digitalRead(S1E);if (S1Ealert == LOW){S11E=0;}else{S11E=1;}
S2Ealert = digitalRead(S2E);if (S2Ealert == LOW){S12E=0;}else{S12E=1;}
S3Ealert = digitalRead(S3E);if (S3Ealert == LOW){S13E=0;}else{S13E=1;}
S4Ealert = digitalRead(S4E);if (S4Ealert == LOW){S14E=0;}else{S14E=1;}

////////////////////////////////////////// cheking ambulance/////////////////////////////////////////////////////////
 
S1Ealert = digitalRead(S1E);if (S1Ealert == LOW){S11E=0;}else{S11E=1;}
S2Ealert = digitalRead(S2E);if (S2Ealert == LOW){S12E=0;}else{S12E=1;}
S3Ealert = digitalRead(S3E);if (S3Ealert == LOW){S13E=0;}else{S13E=1;}
S4Ealert = digitalRead(S4E);if (S4Ealert == LOW){S14E=0;}else{S14E=1;}

/////////////////////////////////////////NORMAL NO AMBULANCE//////////////////////////////////////////////////////////////////////////////////
if((S11E==1) & (S12E==1)  & (S13E==1) & (S14E==1))
{aa=0;
lcd.clear();
lcd.setCursor(0,0);lcd.print("   NORMAL LANE  ");
lcd.setCursor(0,1);
lcd.print(" MOVEMENT ACTIVE  ");
 }

//////////////////////////////////////////AMBULANCE COMING AT FIRST LANE/////////////////////////////////////////////////////////

if((S11E==0) & (S12E==1)  & (S13E==1) & (S14E==1))
{
aa=1;
   
[b]
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LANE CLEARANCE REQ ");
lcd.setCursor(0,1);
lcd.print("FOR LANE 1");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ENTER PASSCODE ");[quote]Here is the problem[/quote]
[/b]

  // Look for keypress
  customKey = customKeypad.getKey();
  if (customKey) {
    // Enter keypress into array and increment counter
    Data[data_count] = customKey;
    lcd.setCursor(data_count, 1);
    lcd.print(Data[data_count]);
    data_count++;
  }

  // See if have reached the password length
  if (data_count == Password_Length - 1) {
    lcd.clear();
 
    if (!strcmp(Data, Master)) {
      // Password is correct
      lcd.print("Correct");delay(2000);lcd.clear();
    lcd.setCursor(0,0);lcd.print("FIRST LANE PASS");
digitalWrite(L1R, LOW);digitalWrite(L1G, HIGH);digitalWrite(L2R, HIGH);digitalWrite(L3R, HIGH);digitalWrite(L4R, HIGH); //digitalWrite(L1A, HIGH);
  L1[0] = CRGB::Red; FastLED.setBrightness(64 );
  FastLED.show(); 
  delay(200);
  L1[0] = CRGB::Blue; 
  FastLED.show(); 
  delay(200);
/*  L2[0] = CRGB::Yellow; 
  FastLED.show(); 
  delay(200);*/
 digitalWrite(L1G, LOW); //digitalWrite(L1A, LOW); 
 L1[0] = CRGB::Black; 
        FastLED.show(); 
 }
else {
      // Password is incorrect
      lcd.print("Incorrect");
      delay(1000);
    }
 
    // Clear data and LCD display
    lcd.clear();
   [quote][/quote]
  }
  
  }

It isn't showing 'ENTER PASSCODE' It is struck at LANE CLEARANCE REQ FOR LANE 1 sentence... I'm new to this forum.Please help...

ramesh4nani:

LiquidCrystal lcd(8, 9, 10, 11, 12, 13);

#include <Keypad.h>

// Length of password + 1 for null character
#define Password_Length 7
// Character to hold password input
char Data[Password_Length];
// Password
char Master[Password_Length] = "148536";

// Counter for character entries
byte data_count = 0;

// Character to hold key input
char customKey;

// Constants for row and column sizes
const byte ROWS = 4;
const byte COLS = 4;

// Connections to Arduino
byte rowPins[ROWS] = {28, 30, 32, 34};
byte colPins[COLS] = {36, 38, 40, 42};

const int S1E=A8;  ////////////////L1
const int S2E=A9;  ////////////////L2
const int S3E=A10;  ////////////////L3
const int S4E=A11;  ////////////////L4

int S11E=0;
int S12E=0;
int S13E=0;
int S14E=0;

int S1Ealert=1;
int S2Ealert=1;
int S3Ealert=1;
int S4Ealert=1;

const int L1G=2;  ////////////////L1-GREEN
const int L1O=3;  ////////////////L1-ORANGE
const int L1R=4;  ////////////////L1-RED

const int L2G=5;  ////////////////L2-GREEN
const int L2O=6;  ////////////////L2-ORANGE
const int L2R=7;  ////////////////L2-RED

const int L3G=14;  ////////////////L3-GREEN
const int L3O=15;  ////////////////L3-ORANGE
const int L3R=16;  ////////////////L3-RED

const int L4G=17;  ////////////////L4-GREEN
const int L4O=18;  ////////////////L4-ORANGE
const int L4R=19;  ////////////////L4-RED

/*const int L1A=22;  ////////////////L1-Stud Alert
const int L2A=23;  ////////////////L2-Stud Alert
const int L3A=24;  ////////////////L3-Stud Alert
const int L4A=25;  ////////////////L4-Stud Alert */

// Array to represent keys on keypad
char hexaKeys[ROWS][COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

// Create keypad object
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

int aa=0;
void setup()
{

lcd.begin(16, 2);

pinMode(S1E, INPUT);
pinMode(S2E, INPUT);
pinMode(S3E, INPUT);
pinMode(S4E, INPUT);

pinMode(L1G, OUTPUT);
pinMode(L1O, OUTPUT);
pinMode(L1R, OUTPUT);

pinMode(L2G, OUTPUT);
pinMode(L2O, OUTPUT);
pinMode(L2R, OUTPUT);

pinMode(L3G, OUTPUT);
pinMode(L3O, OUTPUT);
pinMode(L3R, OUTPUT);

pinMode(L4G, OUTPUT);
pinMode(L4O, OUTPUT);
pinMode(L4R, OUTPUT);

lcd.setCursor(0,0);
lcd.print("ADVANCED TRAFFIC ");
lcd.setCursor(0,1);
lcd.print("LANE CONTROL SYS ");
delay(3000);

lcd.clear();
lcd.setCursor(0,0);
lcd.print("  DEVELOPED BY");
lcd.setCursor(0,1);
lcd.print(" U. RAMESH KUMAR");
//delay(3000);

digitalWrite(L1G, HIGH);digitalWrite(L1O, HIGH);digitalWrite(L1R, HIGH);//delay(10);
digitalWrite(L2G, HIGH);digitalWrite(L2O, HIGH);digitalWrite(L2R, HIGH);//delay(10);
digitalWrite(L3G, HIGH);digitalWrite(L3O, HIGH);digitalWrite(L3R, HIGH);//delay(10);
digitalWrite(L4G, HIGH);digitalWrite(L4O, HIGH);digitalWrite(L4R, HIGH);delay(1000);//delay(10);

digitalWrite(L1G, LOW);digitalWrite(L1O, LOW);digitalWrite(L1R, LOW);//delay(10);
digitalWrite(L2G, LOW);digitalWrite(L2O, LOW);digitalWrite(L2R, LOW);//delay(10);
digitalWrite(L3G, LOW);digitalWrite(L3O, LOW);digitalWrite(L3R, LOW);//delay(10);
digitalWrite(L4G, LOW);digitalWrite(L4O, LOW);digitalWrite(L4R, LOW);delay(2000);
//
lcd.clear();
lcd.setCursor(0,0);lcd.print("  NORMAL LANE  ");
lcd.setCursor(0,1);
lcd.print(" MOVEMENT ACTIVE  ");
}
void loop()
{
if(aa==0)
{
////////////////////////////////////////// FIRST LANE/////////////////////////////////////////////////////////
digitalWrite(L1R, LOW);digitalWrite(L1G, HIGH);digitalWrite(L2R, HIGH);digitalWrite(L3R, HIGH);digitalWrite(L4R, HIGH);delay(1000);
digitalWrite(L1G, LOW);digitalWrite(L1O, HIGH);delay(500);digitalWrite(L1O, LOW);digitalWrite(L1R, HIGH);
////////////////////////////////////////// second LANE/////////////////////////////////////////////////////////
digitalWrite(L2R, LOW);digitalWrite(L2G, HIGH);digitalWrite(L1R, HIGH);digitalWrite(L3R, HIGH);digitalWrite(L4R, HIGH);delay(1000);
digitalWrite(L2G, LOW);digitalWrite(L2O, HIGH);delay(500);digitalWrite(L2O, LOW);digitalWrite(L2R, HIGH);
////////////////////////////////////////// third LANE/////////////////////////////////////////////////////////
digitalWrite(L3R, LOW);digitalWrite(L3G, HIGH);digitalWrite(L2R, HIGH);digitalWrite(L1R, HIGH);digitalWrite(L4R, HIGH);delay(1000);
digitalWrite(L3G, LOW);digitalWrite(L3O, HIGH);delay(500);digitalWrite(L3O, LOW);digitalWrite(L3R, HIGH);
////////////////////////////////////////// Fourth LANE/////////////////////////////////////////////////////////
digitalWrite(L4R, LOW);digitalWrite(L4G, HIGH);digitalWrite(L2R, HIGH);digitalWrite(L3R, HIGH);digitalWrite(L1R, HIGH);delay(1000);
digitalWrite(L4G, LOW);digitalWrite(L4O, HIGH);delay(500);digitalWrite(L4O, LOW);digitalWrite(L4R, HIGH);
}
////////////////////////////////////////// cheking ambulance/////////////////////////////////////////////////////////

S1Ealert = digitalRead(S1E);if (S1Ealert == LOW){S11E=0;}else{S11E=1;}
S2Ealert = digitalRead(S2E);if (S2Ealert == LOW){S12E=0;}else{S12E=1;}
S3Ealert = digitalRead(S3E);if (S3Ealert == LOW){S13E=0;}else{S13E=1;}
S4Ealert = digitalRead(S4E);if (S4Ealert == LOW){S14E=0;}else{S14E=1;}

////////////////////////////////////////// cheking ambulance/////////////////////////////////////////////////////////

S1Ealert = digitalRead(S1E);if (S1Ealert == LOW){S11E=0;}else{S11E=1;}
S2Ealert = digitalRead(S2E);if (S2Ealert == LOW){S12E=0;}else{S12E=1;}
S3Ealert = digitalRead(S3E);if (S3Ealert == LOW){S13E=0;}else{S13E=1;}
S4Ealert = digitalRead(S4E);if (S4Ealert == LOW){S14E=0;}else{S14E=1;}

/////////////////////////////////////////NORMAL NO AMBULANCE//////////////////////////////////////////////////////////////////////////////////
if((S11E==1) & (S12E==1)  & (S13E==1) & (S14E==1))
{aa=0;
lcd.clear();
lcd.setCursor(0,0);lcd.print("  NORMAL LANE  ");
lcd.setCursor(0,1);
lcd.print(" MOVEMENT ACTIVE  ");
}

//////////////////////////////////////////AMBULANCE COMING AT FIRST LANE/////////////////////////////////////////////////////////

if((S11E==0) & (S12E==1)  & (S13E==1) & (S14E==1))
{
aa=1;
 

lcd.clear();
lcd.setCursor(0,0);
lcd.print("LANE CLEARANCE REQ ");
lcd.setCursor(0,1);
lcd.print("FOR LANE 1");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ENTER PASSCODE ");

// Look for keypress
  customKey = customKeypad.getKey();
  if (customKey) {
    // Enter keypress into array and increment counter
    Data[data_count] = customKey;
    lcd.setCursor(data_count, 1);
    lcd.print(Data[data_count]);
    data_count++;
  }

// See if have reached the password length
  if (data_count == Password_Length - 1) {
    lcd.clear();

if (!strcmp(Data, Master)) {
      // Password is correct
      lcd.print("Correct");delay(2000);lcd.clear();
    lcd.setCursor(0,0);lcd.print("FIRST LANE PASS");
digitalWrite(L1R, LOW);digitalWrite(L1G, HIGH);digitalWrite(L2R, HIGH);digitalWrite(L3R, HIGH);digitalWrite(L4R, HIGH); //digitalWrite(L1A, HIGH);
  L1[0] = CRGB::Red; FastLED.setBrightness(64 );
  FastLED.show();
  delay(200);
  L1[0] = CRGB::Blue;
  FastLED.show();
  delay(200);
/*  L2[0] = CRGB::Yellow;
  FastLED.show();
  delay(200);*/
digitalWrite(L1G, LOW); //digitalWrite(L1A, LOW);
L1[0] = CRGB::Black;
        FastLED.show();
}
else {
      // Password is incorrect
      lcd.print("Incorrect");
      delay(1000);
    }

// Clear data and LCD display
    lcd.clear();
  [quote]
  }
 
  }




I want to print Lane clearance Req for lane 1 when lane 1 is triggered and then it should ask for Enter passcode after clearing screen but it isn't showing 'ENTER PASSCODE' It is struck at LANE CLEARANCE REQ FOR LANE 1 sentence... I'm new to this forum.Please help...

IMG.png

While it proves you have that particular text showing, you need to take pictures in outside daylight but not direct sun, not in a dark room if you wish your overall arrangement and wiring to be checked. Note the need to size your messages for the display and that "all caps" is actually, not as legible as mixed case.

That is some serious code there! Well done for posting it correctly, at least in the first one!

It is not easy to follow. Too much repetition, you need to use arrays to store your similar parameters so that the structure of your task is visible.

Hi thanks for the reply... Yes I understand it looks repetitive but there's a lot of program going on... The lcd connections are fine... As it is working in all other cases above. I have omitted most of the code before posting to make it compact and only post the required part... My lcd isn't working accroding to the following code

//////////////////////////////////////////AMBULANCE COMING AT FIRST LANE/////////////////////////////////////////////////////////

if((S11E==0) & (S12E==1)  & (S13E==1) & (S14E==1))
{
aa=1;
   
[b]
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LANE CLEARANCE REQ ");
lcd.setCursor(0,1);
lcd.print("FOR LANE 1");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ENTER PASSCODE ");[/b]

it isn't displaying the ENTER PASSCODE.. Please help

I'll do that... Meanwhile please have a look

//////////////////////////////////////////AMBULANCE COMING AT FIRST LANE/////////////////////////////////////////////////////////
if((S11E==0) & (S12E==1)  & (S13E==1) & (S14E==1))
{aa=1;
lcd.clear();
lcd.setCursor(2,0);
lcd.print("L1 CLEARANCE ");
lcd.setCursor(0,5);
lcd.print(" REQUESTED ");  


lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter Passcode ");

Here it is directly displaying Enter Passcode without displaying L1 CLEARANCE REQUESTED.

Can someone direct me what's problem with this code

//////////////////////////////////////////AMBULANCE COMING AT FIRST LANE/////////////////////////////////////////////////////////
if((S11E==0) & (S12E==1)  & (S13E==1) & (S14E==1))
{
aa=1;
   // Initialize LCD and print

lcd.setCursor(0,0);
lcd.print("PASSCODE FOR L1 ");
lcd.setCursor(0,1);
lcd.print(" lane clearance ");  
delay(3000);

lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter Passcode ");

look at this variant where it is showing the first two lines but is not showing Enter Passcode.. Somebody please help as I'm struck here