My 16x2 LCD displays square characters only

Here are the connections i used
LCD Pin Connect to
1 (VSS) GND Arduino pin*
2 (VDD) + 5v Arduino pin
3 (contrast) Resistor or potentiometer to GND Arduino pin*
4 RS Arduino pin 12
5 R/W Arduino pin 11
6 Enable Arduino pin 10
7 No connection
8 No connection
9 No connection
10 No connection
11 (Data 4) Arduino pin 5
12 (Data 5) Arduino pin 4
13 (Data 6) Arduino pin 3
14 (Data 7) Arduino pin 2
15 Backlight + Resistor to Arduino pin 13**
16 Backlight GND GND Arduino pin*

is just copied the project here on this site:

I’m using a gizduino v4.0 board with ATMEGA328

I’ve attached photos of it. When I look at it straight, I barely see the text but if I look at it at a different angle it’s perfect. Please help guys. Thanks in advance

here are the photos.

Well, it is in fact working, so that is something! In general, you can just connect pin 5 to ground and remove Arduino pin 11 from the descriptor in the code.

To adjust the contrast, connect a variable resistor between pin 3 and ground - and adjust it! A 1k or 10k potentiometer will do, you do not need to connect it to Vcc, just between pin 3 to the wiper and ground to one end. The correct value will probably be somewhere around 470 ohms and you could eventually just substitute the nearest standard value fixed resistor when you are happy.

If your LCD has a resistor of 100 ohms - "101" - for R8 and R9 is zero (or vice versa) - as I am quite sure it does - then you do not need the 220/ 330/ 100 ohm resistor, just connect pins 15 and 16 directly (to Vcc and ground). And I would not bother connecting pin 15 to an Arduino pin either, just connect it to 5V and let the LED light up. :grin: