LCD 1602 + Arduino Uno??

Hi

For the past two weeks I have been using the Arduino. I'm having trouble wiring up a LCD 1602 to my Arduino. I know there are other posts on this specific LCD however I can't seem to find any similar to my issue. I have done so much research and cannot seem to find what I am doing wrong here.

I wired up 3 of these LCDs and end up having pretty much the same result. I can't get past the Squares although I am using a Pot meter. I wired the LCD directly using jumpers and also header pins just in case it was something with my soldering but same result. Right now I am able to see the squares but when adjusting the pot I see 'broken text' and weird symbols on the screen, if I continue turning the POT meter the screen goes blank although I have the HelloWorld script loaded w/ the LiquidCrystal Library, I am still unable to see any clear text.

It could be anything else as I am no expert but I am assuming the broken text is either caused by either incorrect wiring or a shortage. If anyone thinks its a shortage I can switch to one of the other wired screens. I followed two different tutorials with pretty much the same result.

Tut 1:

Tut 2:
Producten | Bad Decision Works <-- Current layout

I updated my Helloworld script to reflect the following:

LiquidCrystal lcd(7, 8, 9, 10, 11 , 12);

Sorry for the huge pictures. Wanted to make sure they're as detailed as possible. Thank you in advance.

Temporarily disconnect the six wires that are listed in your LiquidCrystal LCD statement.

With the power applied you should be able to vary the potentiometer and go from a blank screen to a screen showing one dim row of rectangles and finally to a screen showing one row (or possibly both rows) of dark rectangles. The correct adjustment will typically show one row of fairly dark rectangles.

Now check the continuity of the six wires you removed using an ohmmeter if you have one. If you don't have an ohmmeter then check them by substituting them, one at a time, for one of the wires driving your backlight.

When you correctly reinstall the six known good wires between the LCD and your Arduino and reapply the power your display should work.

Don

Thanks Don. I'll give this a try shortly and report back. I know out of the 3, one display was actually displaying 2 rows of squares so I'll maybe connect that one as you said.

floresta:
Temporarily disconnect the six wires that are listed in your LiquidCrystal LCD statement.

With the power applied you should be able to vary the potentiometer and go from a blank screen to a screen showing one dim row of rectangles and finally to a screen showing one row (or possibly both rows) of dark rectangles. The correct adjustment will typically show one row of fairly dark rectangles.

Now check the continuity of the six wires you removed using an ohmmeter if you have one. If you don't have an ohmmeter then check them by substituting them, one at a time, for one of the wires driving your backlight.

When you correctly reinstall the six known good wires between the LCD and your Arduino and reapply the power your display should work.

Don

Hi Don,

I tried all over again with a different LCD and still no go. Once again the furthest I get is the top row of dark squares. If i turn the potentiometer it eventually goes away and leaves the screen blank. I wired up EXACTLY how it says to in the library:

The circuit:

  • LCD RS pin to digital pin 12
  • LCD Enable pin to digital pin 11
  • LCD D4 pin to digital pin 5
  • LCD D5 pin to digital pin 4
  • LCD D6 pin to digital pin 3
  • LCD D7 pin to digital pin 2
  • LCD R/W pin to ground
  • 10K resistor:
  • ends to +5V and ground
  • wiper to LCD VO pin (pin 3)

The weird part is that it doesn't mention pin 1 and 2 (power and ground) which I have plugged into the 5v and ground...

Any idea what else might be wrong?

floresta:
Temporarily disconnect the six wires that are listed in your LiquidCrystal LCD statement.

With the power applied you should be able to vary the potentiometer and go from a blank screen to a screen showing one dim row of rectangles and finally to a screen showing one row (or possibly both rows) of dark rectangles. The correct adjustment will typically show one row of fairly dark rectangles.

Now check the continuity of the six wires you removed using an ohmmeter if you have one. If you don't have an ohmmeter then check them by substituting them, one at a time, for one of the wires driving your backlight.

When you correctly reinstall the six known good wires between the LCD and your Arduino and reapply the power your display should work.

Don

Also, are you saying to check continuity with pin 1 and 2 unplugged from the LCD??

When you correctly reinstall the six known good wires between the LCD and your Arduino and reapply the power your display should work.

This is kind of confusing.. bear with me as I am not experienced with this at all... I ordered this LCD because according to my research it seemed pretty straight forward.

I'm very much inclined to go for an I2C version like this one.

OK -- I thought we could take a shortcut but lets start all over with my my generic step by step approach.

(1) If the module has a backlight then get it working properly. This involves only pins 15 and 16 on most LCD modules. Make sure to use a current limiting resistor if there is none on the LCD module.

(2) Get the power and contrast working properly. This involves only pins 1, 2, and 3 on most LCD modules. You should be able to just barely see blocks on one row of a two row display and on two rows of a four row display.

NOTE: The Arduino has not been used yet, except as a possible source for the power needed for the first two steps. Do not try to go any further until this is working. If you don't see the blocks then no amount of program code will help.

(3) Connect the LCD R/W pin (pin 5) to GND.

(4) Connect the six control and data wires between your LCD module and your Arduino.

(5) Upload your sketch and it should work.

Troubleshooting:

If you have a 16x1 display and there are blocks only on the left half of the row in step 2 then use

lcd.begin(8, 2);

in your sketch.

If you still don't get a display then make sure that your wiring matches the numbers in the descriptor (or vice versa).

//LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);      // put your pin numbers here

If you get a display but it is garbled or has some other problems then try again with a 'static' sketch, one that displays a simple message on the top row of the display and then stops. All of your code should be in setup() and loop() should be empty between the brackets.

#include <LiquidCrystal.h>

//LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);      // put your pin numbers here

void setup()
  {
  lcd.begin(16, 2);                          // put your LCD parameters here
  lcd.print("hello, world!");
  lcd.setCursor(0,1);
  lcd.print("it works!");
  }

void loop()
  {
  }

If you are still having problems then we need to see a photograph of your setup that clearly and unambiguously shows all of the connections between your Arduino and your LCD module. We also need a copy/paste version of the code that you are actually using, not a link to the code that you think you are using.

JimboZA:
I'm very much inclined to go for an I2C version like this one.

Have you looked at all of the posts related to the problems in getting I2C adapters to work?

Don

I checked the continuity on ALL wires and everything seems fine. I get a beep on every single wire. I re-connected but still the same issue?

floresta:
Have you looked at all of the posts related to the problems in getting I2C adapters to work?

Don

I have.. and decided to stay away from it.

I posted my last response before I realized you had already responded. I am disconnecting everything now and will follow your instructions. Will report back shortly.

Ok, pin 3 (V0) goes into the POT meter, correct?

Also, R/W I am not tying to ground... I simply didn't wire that pin up at all. Doubt this would cause any issues?

Moving forward still..

floresta:
Have you looked at all of the posts related to the problems in getting I2C adapters to work?

No I haven't, but was planning to pick up one of those DFRs when next at my supplier. I see adafruit has this for example; I've had no trouble with stuff from them before.

I posted my last response before I realized you had already responded.

Hint: If you do a preview before posting you will get a warning if anyone has responded while you were typing.

. . . Will report back shortly.

I may not answer for a while, I need my sleep.

Don

Ok, pin 3 (V0) goes into the POT meter, correct?

Yes.

Also, R/W I am not tying to ground... I simply didn't wire that pin up at all. Doubt this would cause any issues?

Wrong. It absolutely will not work with pin 5 floating. You must ground pin 5 or connect it to an I/O pin and include that pin number in the constructor.

Don

POT meter works with no issues... so now time to connect Data wires.

floresta:
Yes.

Wrong. It absolutely will not work with pin 5 floating. You must ground pin 5 or connect it to an I/O pin and include that pin number in the constructor.

Don

Argh!!! Are you serious!? :frowning:

floresta:
Hint: If you do a preview before posting you will get a warning if anyone has responded while you were typing.

In fact In think you get the warning if you hit Post, too. (But iirc you can switch the warning off, somewhere in your profile.)

In fact I got the warning when I hit Post (not Preview) on this very post.

Ok, soldering a jumper to it now.

LiquidCrystal lcd(7, 8, 9, 10, 11, 12); // put your pin numbers here

Does it matter which Data pins go to which Arduino pins?? Am I using D0 through D5?