Arduino LCD 1602 Keypad Shield

Hi there , I am using Arduino UNO . I have some problem about my LCD shield . I have upload the codes to my UNO but nothing shown on the LCD .

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis()/1000);
}

For your information , when i try with this code its work .

//Sample using LiquidCrystal library
#include <LiquidCrystal.h>

/*******************************************************

  This program will test the LCD panel and the buttons
  Mark Bramwell, July 2010

********************************************************/

// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// define some values used by the panel and buttons
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

// read the buttons
int read_LCD_buttons()
{
  adc_key_in = analogRead(0);      // read the value from the sensor
  // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
  // we add approx 50 to those values and check to see if we are close
  if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
  // For V1.1 us this threshold
  if (adc_key_in < 50)   return btnRIGHT;
  if (adc_key_in < 250)  return btnUP;
  if (adc_key_in < 450)  return btnDOWN;
  if (adc_key_in < 650)  return btnLEFT;
  if (adc_key_in < 850)  return btnSELECT;

  // For V1.0 comment the other threshold and use the one below:
  /*
    if (adc_key_in < 50)   return btnRIGHT;
    if (adc_key_in < 195)  return btnUP;
    if (adc_key_in < 380)  return btnDOWN;
    if (adc_key_in < 555)  return btnLEFT;
    if (adc_key_in < 790)  return btnSELECT;
  */


  return btnNONE;  // when all others fail, return this...
}

void setup()
{
  lcd.begin(16, 2);              // start the library
  lcd.setCursor(0, 0);
  lcd.print("Push the buttons"); // print a simple message
}

void loop()
{
  lcd.setCursor(9, 1);           // move cursor to second line "1" and 9 spaces over
  lcd.print(millis() / 1000);    // display seconds elapsed since power-up


  lcd.setCursor(0, 1);           // move to the begining of the second line
  lcd_key = read_LCD_buttons();  // read the buttons

  switch (lcd_key)               // depending on which button was pushed, we perform an action
  {
    case btnRIGHT:
      {
        lcd.print("RIGHT ");
        break;
      }
    case btnLEFT:
      {
        lcd.print("LEFT   ");
        break;
      }
    case btnUP:
      {
        lcd.print("UP    ");
        break;
      }
    case btnDOWN:
      {
        lcd.print("DOWN  ");
        break;
      }
    case btnSELECT:
      {
        lcd.print("SELECT");
        break;
      }
    case btnNONE:
      {
        lcd.print("NONE  ");
        break;
      }
  }
}

Need Help . Thank you .

I have upload the codes to my UNO but nothing shown on the LCD .

Have you adjusted the potentiometer? It’s the blue device in the upper left corner of the pc board.

Also - Did you notice that the ‘descriptors’ are different in the two programs that you have shown?

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

vs.

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

That is because the information within the parentheses must match the physical connections between your Arduino and the LCD. The information about this correspondence is cleverly hidden away and is not mentioned in most tutorials.

Your first example is taken from this ‘Hello World’ tutorial and if you look at the diagram in that tutorial you will see the correlation between the actual connections and the constructor. Adding in some simple comments helps in the comparison.

// LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  // put your Arduino pin numbers here

Your second example comes from the DF Robot site (I think) and it represents the connections that are etched onto the shield. Since you can’t easily change those connections you must use this version of the constructor when you use the DF Robot shield.

I suggest trying a simple example that doesn’t involve the pushbuttons to make sure your shield works. Something like this (untested since I don’t have such a shield):

#include <LiquidCrystal.h>

//LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);      // DF Robot shield connections

void setup()
  {
  lcd.begin(16, 2);                          // DF Robot shield parameters
  lcd.print("hello, world!");
  lcd.setCursor(0,1);
  lcd.print("it works!");
  }

void loop()
  {
                                             // do nothing in 'loop'
  }

Don’t forget to read the very first post in this ‘Displays’ forum titled ‘Warning to users of some vendors LCD keypad shields’.

Don

Thanks dude :slight_smile: . Problem solved . Its all about parenthesis and physical connection between my Arduino and LCD .

Thanks! Very helpful for me as I have a LCD version requiring the (8,9,4,5,6,7) connector pattern!