DFRobot LCD/Keypad Problem

Hey Guys.

I recently bought the Arduino UNO R3 with the DFRobot LCD Sheild. When I upload my code it doesnt seem to do anything accept for the back light that is on. So just to check if it works I uploaded the example from the DFRobot website/wiki

The right bracket keeps on breaking the link.Please just add a Right bracket on the end of the link in the browser address bar. http://www.dfrobot.com/wiki/index.php?title=Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)

(I used the Liquid Crystal example)

But not matter what I do it doesn't seem to work.Nothing shows up on the LCD screen. I made sure all the settings on Arduino Sketch was set right for the UNO and it did indeed program if I clicked on upload.

Anybody else having these problems?


I have two of the same displays and they work fine. Could it be that the contrast pot has a bad connection or was turned down all the way?

I made sure all the settings on Arduino Sketch was set right for the UNO and it did indeed program if I clicked on upload.

If you provide us with a copy of your sketch and a photo of your setup then we could check to see if you actually did this correctly. The fact that it compiled and uploaded just means that the syntax etc. was acceptable, it doesn't mean that the program will work with your hardware.

Also - please fix the link in your original post.


Ok so the link would not work because some script is telling it to ignore the right/closing bracket at the end of the link.

So ill just paste the code Im using here straight out of the tutorial.

//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
 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.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 ");
   case btnLEFT:
     lcd.print("LEFT   ");
   case btnUP:
     lcd.print("UP    ");
   case btnDOWN:
     lcd.print("DOWN  ");
   case btnSELECT:
     case btnNONE:
     lcd.print("NONE  ");

This is the LCD sheild " http://www.dfrobot.com/index.php?route=product/product&product_id=51#.UPBHi0R8JAs "
And the Arduino is a normal UNO R3

Have you followed up on reply #1?

What happens if there is some irrelevant sketch (such as the default 'blink' program) in the UNO when you connect the shield and power things up? At that point the LCD controller would be uninitialized or improperly initialized and you should see a row of blocks on your display. If you don't see those blocks then you have a problem which could be as simple as an incorrectly adjusted contrast potentiometer.

If you have a multimeter then check the power and contrast voltages at pins 1, 2, and 3. Pin 1 is almost always GND and pin 2 should be at +5 v. You should be able to vary the voltage at pin 3 from 0 to +5 V and the optimum value is typically around 0.5 volts.

If you don't have a multimeter then try carefully connecting pin 3 to pin 1 (thus making the contrast voltage 0v) and see if you get the row of blocks. On second thought that wouldn't be a good idea since the pot wiper could be at the +5 Volt end of it's range and this would short the supply.



Thanks allot for the replies.

It turns out the POT is a bit lose or faulty.If I push on it it works but goes off again.

So I will return it.

Thanks guys

I have that DFR009 LCD as well, and it works as expected with that exact code....