Go Down

Topic: LCD+Keypad shield displaying wrong characters (Read 288 times) previous topic - next topic

ishaanshah

Jun 18, 2019, 11:07 am Last Edit: Jun 18, 2019, 11:07 am by ishaanshah
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
Code: [Select]
//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.

floresta

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

ishaanshah


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

dougp

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.
Everything we call real is made of things that cannot be regarded as real.  If quantum mechanics hasn't profoundly shocked you, you haven't understood it yet. - Niels Bohr

No private consultations undertaken!

bperrybap

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.

muton

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

bperrybap


muton


Go Up