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.

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.

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.

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.

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.

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)

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.

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.

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)

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!

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.