LCD troubleshooting

I have a nice little 8x2 LCD, and have not been able to make it display anything at all. It powers up, backlight glowing, but nothing beyond that.

I am trying to follow along in the blum book, which uses a 16x2. I soldered on the headers, changed the 16 in his init block to an 8, and that is about it. Everything else matches, from what I can see, identically.

Is there some kind of major difference between 16x2 and 8x2, or should it simply work?

This is so much more complicated than reading a simple sensor, LED activate, or sensing a button, and I am a little unsure on where to look for my problem. It could be in my soldering the header, it could be miswired, or I could have the wrong code. Where should I be looking, and what for?

Thanks!

I am trying to follow along in the blum book...

Which means exactly nothing to me....

Is there some kind of major difference between 16x2 and 8x2, or should it simply work?

No and yes.

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 your LCD module. 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 your LCD module. You should be able to 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.

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

Hah! It was working perfectly the whole time but I did not have enough contrast to know it.

Thanks for the troubleshooting guide, led me right to the issue!