Now we must upload some sketch to the Arduino to talk to the LCD. Luckily the LiquidCrystal library is already built in. So we just need to load one of the examples and modify it for the pins we used.

If you've changed the pins, you'll want to make a handy table so you can update the sketch properly.

LCD pin name RS EN DB4 DB5 DB6 DB7
Arduino pin # 7 8 9 10 11 12

Open up the File→Examples→LiquidCrystal→HelloWorld example sketch

Now we'll need to update the pins. Look for this line:

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
And change it to:
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

To match the pin table we just made.

Now you can compile and upload the sketch.

Adjust the contrast if necessary
You can of course use any size or color LCD, such as a 20x4 LCD
Or a black on green
The nice thing about the black on green ones is you can remove the backlight. Sometimes they dont come with one!

Multiple Lines

One thing you'll want to watch for is how the LCD handles large messages and multiple lines. For example if you changed this line:
lcd.print("hello, world!");
To this:
lcd.print("hello, world! this is a long long message");
The 16x2 LCD will cut off anything past the 16th character:
But the 20x4 LCD will 'wrap' the first line to the third line! (Likewise the 2nd line runs into the 4th) This seems really bizarre but its how the LCD memory configured on the inside. This probably should have been done differently but hey that's what we have to live with. Hopefully we'll have a future LCD library that is very smart and wraps lines but for now we are stuck. So when writing long lines to the LCD count your characters and make sure that you dont accidentally overrun the lines!

This guide was first published on Jul 29, 2012. It was last updated on Mar 28, 2024.

This page (Arduino Code) was last updated on Jul 12, 2012.

Text editor powered by tinymce.