LCD not displaying characters

Hi, so i am trying to use the hello world program from the examples to display "hello world" on my arduino lcd. All the arduino does is display blank boxes. I am pretty new at this so i am looking for some guidance. Here is the code:

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(7,8,9,10,11,12);

void setup() {
delay(10000);
lcd.begin(16, 2);
delay(2000);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis()/1000);
}

As you can see, I've added pretty significant delays in the setup loop to let the lcd "initialize." I don't know what that means but its what many other answers on this topic have said to do. I have attached a picture of my circuit to show you. Sorry for the sloppy wiring :slight_smile:

You don't need those extra delays.

Have you tried adjusting the contrast?

Some of your solder joints look suspicious.

Don

Thank you, I re-did some of the solders and it works!

Hi.

So good job.
The first delay doesn't do anything (in multiple ways :P).
You enter the function setup().
Immediately after entering, so without having done anything yet, you are waiting 10 very long seconds.
You can't be waiting for something (external) to finish, as you haven't started anything yet.
And delay() means do nothing to the Arduino.
It is like someone sent into coma state, breathing and heartbeat are there, but nothing else (in this case not even healing of something).

The second delay, does the same thing (i.e. nothing) for 2 seconds, presumably to wait for the display to get ready.
You do not have to do that, because the library is supposed to handle stuff like that.
It won't harm, but it costs you a lot of time (32 million Arduino heartbeats) without any need.