First of all, im Dutch so excuse me for my English if it isnt right.
I bought a 20x2 LCD display with a HD44780 controller on the back of it. I hooked it up to my Arduino and ran some tutorial code to see or it will work. What I get is some not entirely clear to see text, and I can only display up to 7 characters. My question is: Does anyone of you know how to fix this?
Thanks,
Dorus
Some images of my setup and errors and
the code that is running:
// include the library code: #include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
// 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() {
// set up the LCD's number of rows and columns:
contrast = analogRead(contrastpin);
Serial.begin(9600);
Serial.println(contrast);
//lcd.begin(20, );
// Print a message to the LCD.
digitalWrite(ledpin, HIGH);
delay(1000);
digitalWrite(ledpin, LOW);
delay(1000);
digitalWrite(ledpin, HIGH);
Thanks for your quick response, but I already knew I had to start the code with lcd.begin(20, 2);
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?
Or are there other solutions?
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.
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.
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:
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
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?
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?
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