LCD displays
- EVE Display - FTDI FT80x Embedded Video Engine include touch, display and Audio functions. Provide Arduino reference design and SPI interface libraries.
- LiquidCrystal: official library included with the Arduino software (w/ 4- and 8-bit modes)
- 20x4 LCD driver: Driver to properly display stuff on a 20X4 LCD display with Arduino
- EnhancedLiquidCrystal for larger LCDs with two Enable (Enable1, Enable2) LiquidCrystal440.zip
- hd44780 - An extensible feature rich LCD library for hd44780 based LCD displays. Fully LiquidCrystal and LCD API 1.0 compatible. It can be installed using the IDE library manager. It includes support for multiple i/o interfaces such as 4 bit, "plug & play" full auto detection of PCF8574 & MCP23008 backpacks, several Noritake VFDs, and more.
- SMARTGPU Color LCD graphics processor A color touchscreen LCD shield with powerful graphics and on board microSD/HC card support for storing thousands of images!
- HpLaserJetLcd: Library to use the LCD, LEDs and buttons salvaged from a HP LaserJet printer. These displays are available inexpensively and require only 3 Arduino pins to drive the LCD, LEDs and backlight, and, only 1 additional pin to use the button inputs.
- Suggested Character based LCD API by dwentz
- The Arduino controls Serial LCD's over a simple four-wire connection, by djmatic.
- About Printing Number
- NKC Electronics serial LCD
- SparkFun serial LCD
- ioBridge Serial LCD
- Optrex IM050240 Serial LCD Driver (PCB marked with PWB50240-CEM). These are super cheap 4 digit displays, with no decimal points, and the words "CLEAR" and/or "SECURE". They must have been made for a security alarm. These are not smart, and must be continually refreshed (supplied software driver does this). They can be purchased as surplus for as little as $1.95. This software requires the use of library MsTimer2.
- Generic Seven Segment Driver for LCD and LED displays This can be used with any number of parallel seven segment LCD displays in conjunction with the MM5452, MM5453 and AY0438 LCD display drivers. Can also be used for seven segment LED displays with the M5450 and M5451 LED display drivers.
- display values on LCD screen - Translating analogRead(values) into ASCII code to display the value on a LCD screen.
- Philips PCD8544 (Nokia 3310) driver - Simple example of interfacing with the Nokia 3310 LCD. There is also a library available that makes it a bit easier: PCD8544 (including a glyph editor). Another library here.
- Parallax Serial LCD's - Library for controlling Parallax 3-wire serial LCD's
- Parallax Serial LCD's (Arduino 1.0) - Library for controlling Parallax 3-wire serial LCD's (Updated for Arduino 1.0)
- phi_big_font - Display larger characters and numbers six times the size of normal character LCD font. Excellent for clock display or to catch people attention from far away, based on the LiquidCrystal library.
- phi_super_font - Display super-sized characters and numbers 20 times the size of normal character LCD font. Excellent for clock display or to catch people attention from far away, based on the LiquidCrystal library. Only runs on 16*4 or 20*4 displays.
- http://forum.arduino.cc/index.php?topic=185766.0 TallFont: Print double-height, standard width numbers on a common LiquidCrystal HD44780 character display.
- ST7036 LCD driver/controller - Driver for LCDs with the ST7036. LCDs with the same driver should be supported as is or with minor modifications.
- NHD‐C0220BiZ‐FSW‐FBW‐3V3M
- NHD-C0220BiZ-FS(RGB)-FBW-3VM
- LCDs with the ST7032i should also be supported with minor modifications
-
- NHD-C0216CiZ-FSW-FBW-3V3
- NHD‐C0216CiZ‐FN‐FBW‐3V
- New LCD library - Replacement for the original LiquidCrystal Library to control LCDs with different control interfaces: 4bit, 8bit, I2C, ShiftRegister, SPI coming soon. The library is faster than the original, more flexible and extendable.
- ST7735 - 1.8" SPI display.
- LcdBarGraph - Turns your LCD into a bar graph, based on the LiquidCrystal library.
- Using 4-bit mode with Hitachi LCD controllers. There are now various code examples for how to talk to an HD44780-compatible LCD in 4-bit mode (in order to save arduino pins):
- LiquidCrystal: official library included with the Arduino software (w/ 4- and 8-bit modes)
- neillzero's 4-bit LCD library.
- glasspusher's 4-bit forum post with code
- massimo's 4-bit forum post with code
- tomek added a schematic, picture, Commands for Character Modules and another code example
- nuelectronics' LCD shield with joystick-style keypad - schematic and examples
- LCD Smartie on Arduino - Communicate and show your PC status, email status, RSS feed and control your PC application on Arduino & LCD shield -- project link
- 4-bit library example with schematic, photo and code. SK Pang.
- API 1.0 compatible LiquidCrystal_I2C library for using PCF8574 I2C expander to control Parallel HD44780 displays
- Another simple but functional library allows an Arduino board to control LCDs - Project Link
- LCD library - Replacement for the original LiquidCrystal Library to control LCDs with different control interfaces: 4bit, 8bit, I2C, ShiftRegister, SPI coming soon. The library is faster than the original, more flexible and extendable.
- Using Arduino via shiftregisters to connect to LCDs (in order to save even more output pins)
- Marc MERLIN's LCD3Wires compatible and arduino 1.0 compatible LiquidCrystal compatible (inherited) library for latching shift registers. If you have non latching shift registers, you should look at the raron and mircho's code below.
- tomek's 4Bits documentation to make a 3 pin interface for LCDs (note, the code is not arduino 1.0 compatible and provides few primitives, see Marc's page for better code that works with the same hardware). For reference, LCD3Wires is the wiring used on the Pebble and Pebblev2 boards.
- raron and mircho's arduinoshiftreglcd library, using a 2-wire or 3-wire connection in 4-bit mode (this code has been updated and included in Francisco Malpartida's library mentioned below)
- Steve Hobley created a small footprint LCD driver board using a 595 shift register. Etch mask, build notes, and updated LiquidCrystal library provided here.
- LCD library - Replacement for the original LiquidCrystal Library to control LCDs with different control interfaces: 4bit, 8bit, I2C, ShiftRegister, SPI coming soon by Francisco Malpartida. The library is faster than the original, more flexible and extendable.
- Using i2C to connect LCDs to Arduino
- Complete API and library for using i2c based character displays.
- Using I2C Port expander and LCDs (2 wire interface to LCD)
- PCFCrystal, another library to control an LCD display via i2c bus and PCF8574 expanders. Compatible with official Liquid Crystal. Source code, schematics and explanation here.
- LiquidTWI2 Fast & compact Library for Adafruit I2C Backpack (MCP23008) and Adafruit RGB LCD Shield (MCP23017).
- LCD library - Replacement for the original LiquidCrystal Library to control LCDs with different control interfaces: 4bit, 8bit, I2C, ShiftRegister, SPI coming soon. The library is faster than the original, more flexible and extendable.
- LiquidCrystal_I2C - LCD Library for HD44780 controlled 16x2, 20x4, etc. displays, with generic CN type 2 (black) PCF8574 I2C backpack (EBay type from China).
- Connecting LCDs using 1 pin, SoftwareSerial, and simple controller
- Use an external serial interface Put a small PCB ($14 kit/more assembled) between your Arduino and any HD44780 compatible LCD, and you free pins and memory in the Arduino for things which are more fun than the details of driving the LCD. SoftwareSerial is one of the standard libraries.(Anderson/ ModernDevice/ Wulfden LCD117)
- Graphics LCD
- KS0108 library
- SMARTGPU Color LCD graphics processor A color touchscreen LCD shield with powerful graphics and on board microSD/HC card support for storing thousands of images!
- The Serial_LCD library suite handles the μLCD, μOLED and μVGA screens from ""4D Systems"". It manages text, graphics, touch, read and write on SD-card, sound, through a single serial interface, either hardware, software or I²C. High-level commands offer GUI, graphics and even a picture frame!
- Sparkfun 128x64 Serial Graphics LCD Library (Firmware update required)
- 12864 library
- gLCD Library for Nokia 6100 screens. Easily configured to suit most controller variations - both Phillips and EPSON.
- Philips PCF8833 library (Nokia 6100 Screen)
- Epson S1D15G10 library (including Sparkfun's Nokia 6100 Knock-off color LCD)
- T6963 Library
- T6963 Library with new Features
- U8glib: Support for SSD1325, SSD1327, SSD1306, SBN1661, UC1701, ST7565, ST7920, UC1610, PCD8544, PCF8812, LC7981, T6963 and KS0108 based displays. >200 fonts included. Supported by M2tklib GUI.
- ArdGrafix6100:A fast, full-featured and practical Arduino / ATmega graphics driver for Nokia 6100 LCDs
- GLCD explained and exemplified: The latest revision of the PlainGLCD library is available on simple request, and it comes with its user manual!
- openGLCD: open source glcd library for use in open source projects.
- Ucglib: Open source true color graphics library for TFT and OLED displays with up to 18 bit color depth. Supported controller: ST7735, ILI9341, PCF8833, SSD1351.
- Links
Troubleshooting
- LCD display is too dark or too pale. All LCDs have a contrast setting, whether it is available to you for adjustment or not. Many have backlights. The latter parts of the guide to using an external serial controller address these issues in general terms, mostly independently of controller issues.
Tip for avoiding a pot for contrast
- Instead of using a potentiometer for the contrast setting you could use a diode and a 10K resistor. From pin 3 of the display put a diode (1N4001) to ground (pin 1 of the display). Ring on the diode should be oriented to ground! And put the 10K resistor from pin 2 (Vcc) of the display to 5V supply voltage. On several displays this gives a perfect contrast. If not then use the above mentioned 10K potentiometer. Why this is working: Measuring the voltage at the diode will give 0,65 V. And this is exactly the optimum for contrast on most displays.
Printing Numbers
The itoa() stdlib C library function can be used to convert a number into a string, in a variety of bases (e.g. decimal, binary). The buffer must be large enough to hold the largest number, plus sign and terminating null: e.g. 32 bit base-10: "-2147483648\0" = 12 characters.
The stdlib itoa() library routine adds around 600 bytes, the roll-your-own K&R implementation, which includes string.h, adds around 670 bytes. Using snprintf() from stdio.h adds just over 2200 bytes.
e.g.
char buf[12]; // "-2147483648\0"
lcd.printIn(itoa(random(1024)-512, buf, 10));