Go Down

Topic: My 20x2 LCD doesnt work properly (Read 2 times) previous topic - next topic

Dorus

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);
 
  lcd.print("123456789");
}

void loop() {

  lcd.setCursor(0, 1);

}

liudr

You need lcd.begin(20,2); in the setup before you can do anything to the display, such as printing to it.

Dorus

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?

Thanks,
Dorus

floresta

Quote
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

Dorus

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

Go Up