List All Products

Advanced Search

Lost Password?
Forgot your username?
No account yet? Register

View Cart/Checkout
Your Cart is currently empty.

Newest Products!

Current Sensor 30 Amp
Current Sensor 30 Amp

Arduino Pro
Arduino Pro

Seeeduino Mega
Seeeduino Mega

Arduino Character LCD Tutorial




See the LCD Shield for Arduino for a pre-assembled LCD+ Keypad shield.


Your Arduino has things to tell you. One of the easiest ways to let it communicate is to attach a character LCD. These LCD modules are a lot of fun, however they can be tricky to get working right. Many a hacker has spent hours trying to get one working, only to suffer through frustration and humiliation. Hacktronics is here to help.


The LCD modules covered here are based on the very popular HD44780 controller.


Software used in this tutorial can be downloaded here:

Arduino LCD Software Example

Hardware used in this tutorial:

LCD HackPack, 16x2 or 20x4 (includes LCD module, header pins, small solderless breadboard, wire jumpers, and contrast resistor)


Arduino Uno, Mega, or something compatible



If this is your first Arduino project, first go through our “Arduino: Getting Started” and “Beginning Solderless Breadboards” tutorials.


Use your solderless breadboard and wire jumpers to make these connections:


 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*

*Use a breadboard rail to make multiple connections to the Arduino GND pin

*For potentiometer connection, use the potentiometer's center pin and either of the other pins to make the connection from LCD pin 3 to Arduino GND

** A current limiting resistor or potentiometer (40 Ohm minimum) should be used to avoid excessive current.


It should look something like this:


arduino lcd connection




Here is the driver code:

/* ------------------------------------------------------------------------------- */

// character LCD example code

#include <LiquidCrystal.h>

// Connections:
// rs (LCD pin 4) to Arduino pin 12
// rw (LCD pin 5) to Arduino pin 11
// enable (LCD pin 6) to Arduino pin 10
// LCD pin 15 to Arduino pin 13
// LCD pins d4, d5, d6, d7 to Arduino pins 5, 4, 3, 2
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

int backLight = 13;    // pin 13 will control the backlight

void setup()
  pinMode(backLight, OUTPUT);
  digitalWrite(backLight, HIGH); // turn backlight on. Replace 'HIGH' with 'LOW' to turn it off.
  lcd.begin(16,2);              // columns, rows.  use 16,2 for a 16x2 LCD, etc.
  lcd.clear();                  // start with a blank screen
  lcd.setCursor(0,0);           // set cursor to column 0, row 0 (the first row)
  lcd.print("Hello, World");    // change text to whatever you like. keep it clean!
  lcd.setCursor(0,1);           // set cursor to column 0, row 1
  // if you have a 4 row LCD, uncomment these lines to write to the bottom rows
  // and change the lcd.begin() statement above.
  //lcd.setCursor(0,2);         // set cursor to column 0, row 2
  //lcd.print("Row 3");
  //lcd.setCursor(0,3);         // set cursor to column 0, row 3
  //lcd.print("Row 4");

void loop()

/* ------------------------------------------------------------------------------- */


You can also download it here example LCD software, and unzip the file.

You will now have a folder called “LCD_example”

Start the Arduino software and load the example program by clicking File->Sketchbook->Open

Navigate to the LCD_example folder and select the “LCD_example.pde” file.

Transfer the program to your Arduino by clicking the “Upload to I/O board” button. After uploading, on the LCD you should see:

Hello, World

If you do not see this message, your LCD module may be out of sync with your Arduino. Just press the reset button on your Arduino (it may take a couple of resets), and they should synchronize.

See the comments in the example code for instructions on positioning the cursor and printing your own messages to the LCD.  It is that simple!

Happy hacking.

Send feedback on this tutorial here.