AVR-Based Serial Enabled LCDs Hookup Guide
Serial UART: Example Code - Basic
You can download the latest example code for this experiment from the GitHub repo or you can copy and paste the following code into your Arduino IDE:
language:cpp
/*
OpenLCD is an LCD with serial/I2C/SPI interfaces.
By: Nathan Seidle
SparkFun Electronics
Date: April 19th, 2015
License: This code is public domain but you buy me a beer if you use this and we meet someday (Beerware license).
This example shows how to display a counter on the display over serial. We use software serial because if
OpenLCD is attached to an Arduino's hardware serial port during bootloading it can cause problems for both devices.
To get this code to work, attached an OpenLCD to an Arduino Uno using the following pins:
RX (OpenLCD) to Pin 7 (Arduino)
VIN to 5V
GND to GND
*/
#include <SoftwareSerial.h>
SoftwareSerial OpenLCD(6, 7); //RX, TX
byte counter = 0;
byte contrast = 2; //Lower is more contrast. 0 to 5 works for most displays.
void setup()
{
Serial.begin(9600); //Start serial communication at 9600 for debug statements
Serial.println("OpenLCD Example Code");
OpenLCD.begin(9600); //Start communication with OpenLCD
//Send contrast setting
OpenLCD.write('|'); //Put LCD into setting mode
OpenLCD.write(24); //Send contrast command
OpenLCD.write(contrast);
}
void loop()
{
//Send the clear command to the display - this returns the cursor to the beginning of the display
OpenLCD.write('|'); //Setting character
OpenLCD.write('-'); //Clear display
OpenLCD.print("Hello World! Counter: "); //For 16x2 LCD
//OpenLCD.print("Hello World! Counter: "); //For 20x4 LCD
OpenLCD.print(counter++);
delay(250); //Hang out for a bit
}
Here's what you should see after uploading the code to your Arduino. Try changing the text with a different message!
To send text to the board, wait 1/2 second (500ms) after power up for the splash screen to clear, then send text to the display through your serial port. The display understands all of the standard ASCII characters (upper and lowercase text, numbers, and punctuation), plus a number of graphic symbols and Japanese characters. See the HD44780 datasheet for the full list of supported characters.
If you send data that goes past the end of the first line, it will skip to the start of the second line. If you go past the end of the second line, the display will jump back up to the beginning of the first line.