Can't get the 2004A LCD display to display chars :)

I've tried doing many-a-things but for some reason my LCD 2004A display that I bought recently doesn't print any characters.

I've used all the different methods from the 5 param to the 11 param liquidcrystal methods but the characters don't get printed. I've not connected the V0 to a variable resister but none of the tutes say that its needed.

HOWEVER, when I ground the v0 the LCD 1 and 3 lines get highlighted in the white background and I can vaguely see the characters on it.

Anyone able to tell me why this might be the case? Faulty unit?

Btw I'm a noob at arduino and electronics so I may have damaged it already but I've tried being as careful as possible.

I've used all the different methods from the 5 param to the 11 param liquidcrystal methods but the characters don't get printed.

If you are referring to the number of parameters within the constructor then you probably should start with the 6 parameter version (which uses the fewest number of wires possible). In any case you must use a constructor that matches your wiring.

I've not connected the V0 to a variable resister but none of the tutes say that its needed.

If you don't have a potentiometer or any resistors you should get satisfactory, if not optimum, results by connecting LCD pin 3 to GND. You will not get any characters displayed if you leave that pin floating (disconnected).

Have you tried the 'Hello World' tutorial? You can use it just as presented even though you have a 20x4 display. If it doesn't work for you then you should provide us with some nice clear photographs so we can check out your connections and your soldering.

Don

Thanks Don.

I've used all constructors and nothing resolved the contrast issue.

I finally grounded the V0 and that bring the pixels on but the text is lost in the pixels as the wording pixels and the background pixels are almost at the same level of brightness.

I can't figure out how to shut off the other pixels and I assumed that's managed by the LiquidCrystal lib.

heshan_jayawardena:
I've used all constructors and nothing resolved the contrast issue.

Nor would you expect it to.

heshan_jayawardena:
I can't figure out how to shut off the other pixels and I assumed that's managed by the LiquidCrystal lib.

Why would you expect that? The LiquidCrystal library is for sending data to the display. The contrast control is what sets the display contrast. Two entirely separate things.

The contrast control is the contrast control. It is a resistor between V0 and Gnd. Try values of 330 and 470 Ohm between V0 and Gnd. Depending on which gives better contrast, you might try a lesser or a greater resistance. It is common to use a variable resistor, but in general, if you try some values and get it right, it will stay that way. It does not have to be precise at all.

Note however that the contrast is very voltage sensitive. This means that if the supply voltage to the LCD is varied, the contrast will change, so you need to keep it fairly well regulated.

I guess it’s time for my generic LCD procedure once again.


Here is my generic step by step approach that should work:

(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.

Don

floresta:
I guess it's time for my generic LCD procedure once again.

That would apply to virtually every post here citing "1602", "2004" etc. :roll_eyes:

I suppose I must add it (with due acknowledgement) to my "instant answer" file, along with "read the instructions ... code tags" etc.

Thanks gents for the feedback. I have feeling it might be either the connections or the LCD unit as I've grounded the V0 as per some tutorials I read but I still have the surrounding pixels having a brightness close to the characters.

I will try with variable resister and see how this goes.

That write up was very helpful Floresta and thanks Paul__B!