LCD only displaying part of the text (first 8 chr)

This is a continuation (with no reference to) my old post, which I have resolved (mostly) however I have a strange problem that won't go away. Sorry, I tried to delete my previous message, but it didn't work as I intended. =(

firstly, this LCD is the hitachi driven one, and is 16x1 This means it should display 16 character messages with ease, right?

The code to display the text is lcd.print("Hello, World!"); It half works. on the LCD I have "Hello, W", it's missing the "orld!" part.

I am just confused as to why it's wrong like that? The code that fixes it (and is burtally inefficient is:

void setup() {
  // set up the LCD's number of rows and columns: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, w");
  lcd.setCursor(0, 1);

anyone know what I am doing wrong? Why must I setCursor to elsewhere when I haven't even exceeded my 16 character limit

What happens if you tell it has a 1 line display rather than the 2 lines in the sketch ?

lcd.begin(16, 1);

Ahh, I thought of that too.

when happens when I do that is the contrast jumps up extremely high (it was fine when I had the 16,2) and the first 8 "blocks" (where the letters are) are the ONLY ones that turn black, but still the same thing, only the first 8 characters displayed (faintly due to the contrast).

What if you adjust the contrast so its clear when set to 1 line ?

Still the same. Only the first 8 characters are displayed. It's almost as this display is 2 lines of 8 characters each arranged in a horizontal position.

|_ _ _ _ _ _ _ _ | _ _ _ _ _ _ _ _| DISPLAY 1 ^ DISPLAY 2 ^

Above is what I mean.

Sounds like an oddball LCD that doesn't quite get on with the arduino and/or it's library. There are a huge number of different displays made by umpteen different manufacturers over a period of several decades, they don't all work as they should with the arduino.

There are several libraries other than the standard liquidcrystal, have you tried any of them ?

This is one :

I'm not sure if this will help you at all, but here is what my LCD looks like and the picture of the display showing 8 characters:

I will post more alter, but I have to go to work now. Thanks!

many, perhaps most 16x1 displays are better described as 8x2 displays.


if you use this version of the LiquidCrystal library and an lcd.begin(8,2) statement it will wrap "line1" onto "line 2" so that all 16 characters show up on one line.

Sorry for a newbie question, but how would I make that into a library? Many thanks!

there is probably good description somewhere on the site.

what I do on my Mac is to navigate to a folder inside the Arduino application:
That folder holds libraries. in this case you add the downloaded folder LiquidCrystal440.

in your sketch, instead of #include <LiquidCrystal.h> write #include <LiquidCrystal440.h> from then on it is identical syntax
LiquidCrystal lcd(rs,rw,en,d0,d1,d2,d3) etc.

Thank you! That's wonderful! The LCD440 code worked like a charm.