LCD+Keypad shield displaying wrong characters

Hi,
I am new to this forum and to Arduino as well. I ordered a LCD+Keypad shield online. When i use the code from the manufacture, the LCD is displaying different characters than those which should be printed. Here’s the sketch

//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;
     }
 }

}

I also have attached photos of my setup.
Any help would be appreciated.

It likes like there is a problem with one or more of the data lines connecting your display and the shield or connecting the shield and the Arduino itself.

Don

Is there any way that it can be fixed?

The issue appears to be with DB4 on the LCD as LCD data bits 4 and 0 are stuck low. That is pin 11 on the LCD module and Arduino pin 4.

Look very carefully at LCD pin 11 and the soldering to make sure that it is soldered properly. Look very carefully at the Arduino header socket for Arduino pin 4, the shield pin for Arduino pin 4 and the soldering for that pin on both the Arduino and the shield to see if you see anything out of place.

Either there is a short between adjacent pins or there is a broken connection somewhere along the way between the Arduino processor pin and the LCD pin.

It is also possible that Arduino pin 4 inside the Arduino processor is blown.

--- bill

bperrybap:
The issue appears to be with DB4 on the LCD as LCD data bits 4 and 0 are stuck low.
That is pin 11 on the LCD module and Arduino pin 4.

Look very carefully at LCD pin 11 and the soldering to make sure that it is soldered properly.
Look very carefully at the Arduino header socket for Arduino pin 4, the shield pin for Arduino pin 4 and the soldering for that pin on both the Arduino and the shield to see if you see anything out of place.

Either there is a short between adjacent pins or there is a broken connection somewhere along the way between the Arduino processor pin and the LCD pin.

It is also possible that Arduino pin 4 inside the Arduino processor is blown.

— bill

You could try switching to another output pin but, only after going through the previous steps. If pin 4 *is * bad it may be because of the mentioned short circuit.

I would think that the most likely issue is a soldering issue or that there is an inside the header socket for pin 4 on the Arduino board.

It may be stitching problem, LCD can be separately removed and tested with bread board

https://youtu.be/J22PdRkMoWw What I did was I typed video with 1602 and key

muton: It may be stitching problem

What is that?

bperrybap: What is that?

There may be needle contact problems