1602 LCD Dispaly dont work

Hi all,I have arduino uno and I have problem with 1602 LCD Dispaly (16x2).I tried lot of source codes but my display make only this (nothing more) http://www.ladyada.net/images/arduino/lcdtut/contrasttest.jpg it's not showing text or numbers.

My connection of LCD:
LCD Arduino

1 GND
2 5V
3 potentiometer(middle)
4 Digital 12
5 GND
6 Digital 11
11 Digital 5
12 Digital 4
13 Digital 3
14 Digital 2
15 5V
16 GND

Need a high res picture and code you used.

  1. Don't connect pins 15 and 16 directly to 5v and ground unless you know for sure that your lcd display includes a series resistor for the backlight. I have used 2 different sorts of these display, and both needed a series resistor.

  2. I found that I needed the pot set almost at one end to see anything.

  3. You need to post the code for your sketch if you want help fixing it.

The fact that you is getting the row of blocks indicates that your display is powered and the contrast voltage is close enough to be usable. If you are following the rest of the LadyAda tutorial then be aware that she is using different Arduino pins than those used in the Arduino tutorial. Did you see this part:

Now we'll need to update the pins. Look for this line: 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
And change it to:
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
To match the pin table we just made.

Don

My 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);
}

It display only some characters:

I have some table on the back side of display:
1 2 3 4 5 6 7 -- 14 15 16
GND VVD VO RS RW E DB0--DB7 BL1 BL2

I have trouble following all the wires and am never as good at that as Don and John, but it looks to me like the blue wires from Arduino pins 11 and 12 go to DATA pins, not RS and EN control pins--ie in this line
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
the 5 and 3 should be 12 and 11. That makes me think the rest of them are probably also goofy.

Sorry if I misunderstood you, but blue wires from Arduino pins 11 and 12 go to E and RS.
And Digital pins 5 and 3 from arduino go to 11 and 13.

You need a delay call in loop(), e.g. delay(200). Otherwise it will print characters so fast that they will never stabilise.

I tried it but not change. (I think that hello world should show nevertheless).

You need a delay call in loop(), e.g. delay(200). Otherwise it will print characters so fast that they will never stabilise.

No one else has ever needed this delay in all the years that this tutorial has been in existence. The values only change once per second.

My own opinion is that the tutorial sketch is inappropriate for a beginner to use to check out their LCD. There should be different static information written to each line of the display in setup() and loop() should be empty.

#include <LiquidCrystal.h>

//LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

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

void loop()
  {
  }

I don't see any connections to your backlight. Some displays are not visible without the backlight on, but if you are seeing the row of blocks this is not your problem. I suggest going back and starting again. Use the connections that LadyAda suggests, it results in a much neater setup which is harder to mess up and easier to troubleshoot.

Don

floresta:

You need a delay call in loop(), e.g. delay(200). Otherwise it will print characters so fast that they will never stabilise.

No one else has ever needed this delay in all the years that this tutorial has been in existence. The values only change once per second.

[/quote]

The 16x2 LCD I used in my last project definitely need did periods when it wasn't being written in order to show steady characters, even if I was refreshing it with the same data all the time. Otherwise the display flickered, with bands appearing across it. I added a 200ms delay between refreshes and the problem went away.

Your wiring and pin numbers in the lcd(...) call look OK to me, as far as I can tell from your photo. However, it looks like you have not soldered the connections to the LCD - or are they soldered on the other side? If you are using a row of header pins sitting loosely in the holes in the LCD board and not soldered, that may not give you reliable connections.

The 16x2 LCD I used in my last project definitely need did periods when it wasn't being written in order to show steady characters, even if I was refreshing it with the same data all the time. Otherwise the display flickered, with bands appearing across it. I added a 200ms delay between refreshes and the problem went away.

This will happen if you are clearing the display before writing the new data but may not happen if you just overwrite the old information.

However, it looks like you have not soldered the connections to the LCD...

Good catch.

Don

floresta:

The 16x2 LCD I used in my last project definitely need did periods when it wasn't being written in order to show steady characters, even if I was refreshing it with the same data all the time. Otherwise the display flickered, with bands appearing across it. I added a 200ms delay between refreshes and the problem went away.

This will happen if you are clearing the display before writing the new data but may not happen if you just overwrite the old information.

I was not clearing the display between refreshes, and it happened anyway. I was making a call to enable a blinking cursor, but the same call with the cursor in the same position each time. Maybe the problem doesn't occur if you have the visible cursor turned off.

I guess OP didn't solder on either side. If back side is soldered then the solder will come through and show up on the front side. So solder everything and use code in reply #9.
The left arrow character is 127 so I suspect the rs and en lines had contact but the data lines are all too loose and produced 127.