My 20x2 LCD doesnt work properly

I already tried to run the code with that in it, but it didnt work either. The only change it made was that the characters where a bit more vague, and thats it. It wasnt an improvement, so I left it out, or should I put it back in?

You will not be able to use the second line without it. The characters were vague since the same contrast voltage will produce different results when the display is set up for two lines vs one line.

Now, getting back to your original problem....
It looks like you are using the Arduino to control the contrast. Using a value of 0 is the same as connicting pin 3 to GND when you typically want a small positive voltage on that pin. Also there is a conflict between the pin you appear to be using for the contrast [int contrastpin = 2;] and the pin you are using for LCD data line D7 [LiquidCrystal lcd(12, 10, 5, 4, 3, 2);].

Also, you want to leave loop() empty. You should move lcd.setCursor(0, 1); to the end of setup() and use another lcd.print() to put some different information on the second line.

If it still does not work then a clear (focused) photograph showing the connections between your LCD and your Arduino will be needed.

Don

The readings you see in my code: contrast = analogRead(contrastpin); is just to see what the value of my contrast pot was. I hooked pin 3 on the LCD screen, which is defined as C (for contrast) to a potentiometer(10K).
But I will centainly try my code with the void loop() empty, thanks for your response. Ill let you know whether it worked or not.

Dorus

I tried running the programme with an empty loop() and also added the lcd.begin(20, 2); And printed something on the second row... which resulted in this.
(See pictures)
It's not even to see what it should be, so here's the code:

#include <LiquidCrystal.h>
// Command syntax: LiquidCrystal lcd(RS, RW, Enable, D4, D5, D6, D7)
LiquidCrystal lcd(12, 10, 5, 4, 3, 2);
int contrast =0;
int ledpin = 13;
int contrastpin = 2;

void setup() {
lcd.begin(20, 2);
delay(5000);
//contrast = analogRead(contrastpin);
// Serial.begin(9600);
// Serial.println(contrast);
digitalWrite(ledpin, HIGH);
delay(1000);
digitalWrite(ledpin, LOW);
delay(1000);
digitalWrite(ledpin, HIGH);

lcd.print("Hi1234");
lcd.setCursor(0, 1);
lcd.print("Hello");
lcd.setCursor(0, 2);
}
void loop() {
}

Dorus

Need to see details of how you connected the lcd to your arduino. I guess some connections were wrong.

I had a former software/hardware designer over at my house, and he checked the pins and they were right. But this guy didnt know the Arduino environment, so he couldnt help me with that.
Could it be, in some way, that the LCD is broken or something? Or that the Arduino doesnt support a 2x20 display? Because I only saw 2x16 in some tutorial videos.
But this is how I connected it:
VSS - GND
VDD - +5V
C - Pot wiper
RS - pin12
R/W - GND (for a 0V)
E - pin10
DB7 - pin2
DB6 - pin3
DB5 - pin4
DB4 - pin5
Abacklight - +5V
Cbacklight - GND

Dorus

all except you should do LCD pin 16-150ohm resistor-gnd. You need the resistor to limit current through the back light. Any amount up to say 2Kohm is good.

Ive put a resistor between Cbacklight and the GND, so my wiring should be alright, i guess. Thanks for pointing me at that :). So does anyone know that causes the problems I have?

You have to set the cursor before you print the data.
Your choices for the line are 0 and 1, not 1 and 2.

Don

Don, do you mean like this:
lcd.setCursor(0, 0);
lcd.print("123456789");
lcd.setCursor(0, 1);
lcd.print("123456789");

Yes, except that you want to print more than 9 characters on each line and you want to print different information on the second line.

Don

I tried it like this:

lcd.setCursor(0, 0);
lcd.print("Hello World!!!");
lcd.setCursor(0, 1);
lcd.print("123456789101112");

But it didnt work. (Again a picture attached) Could it be that I need to use a different library? Because I read something about the LiquidCrystal440 and the LCD4bit.

So essentially the display showed the right characters, more or less, but with some noise. Maybe it is bad. Do you have another display from a different source/store or maybe borrow one from a friend?

Should I return the display from where ive got it, and swap it for a 16x2 or a new 20x2?

Send them a nice email with the code and the noisy hello 123456 picture (I suggest a direct shot instead of angled). See if you can get a replacement or just grab a cheap 16X2 display on ebay. How much did you pay for the display, just curious?

It appears that your display may be bad. If you look on the back of your module you should see several integrated circuits or blobs of epoxy. One of those is the HD44780 (or equivalent) controller which contains the microprocessor, the memory, and the driver for the first eight columns of characters. The other ICs are HD44100 (or equivalent) auxiliary controllers each one of which is the driver for another eight columns of the display. It appears, among other things, that your auxiliary controllers are not functioning correctly. I guess you can now see why I recommended that you display long messages!

Don

Edit: Sorry for the delay in answering, they are repairing the fiber cables in the area and our internet service was down all day.

@floresta
No problem, I'm at school during the day, so I can't respond/read it anyway. What I noticed on the LCD was, that when I sometimes tapped the LCD on my desk, the blocks would sometimes disappear. I think you are right, and the LCD is broken. I shall call the company who supplied it to ask for warranty or something.

@luidr
I paid 9 euro, which is equal to about $12. Is this expensive for a LCD?

Could have been damaged in shipping. The rubber conductors supporting the liquid crystal glass could have displaced making poor contact. Or the control chip has gone haywire. I don't buy 20X2 but if I get a new 16X2, I aim to pay no more than 6USD for it. Search ebay. chinaecomponents on ebay is pretty good with quality and has free shipping to US (maybe Europe too). They ship from China. dipmicro on ebay or dipmicro.com has decent price displays but it will only be worth your shipping fee if you buy some parts at the same time. I purchase these displays all the time and have only stuck with one or two suppliers since their qualities are consistently good. If you look at my signature, you know I have several designs that involve displays :wink:

I saw your blog, youve got some pretty amazing projects on there. And you make your own shields! :open_mouth:

Dorus:
I saw your blog, youve got some pretty amazing projects on there. And you make your own shields! :open_mouth:

Thanks!

Making things fells right! I also wrote and maintain some free library codes that many find useful :slight_smile: Most of them involve a display :slight_smile: