16x2 character LCD with I2C interface

  • Up to 8 simultaneous and independent LCDs
  • Software-controlled backlight
  • Does not overload Arduino's voltage regulator
  • I2C interface – uses only two microprocessor pins

An easy way to add a simple visual interface to your project is by using an LCD Nanoshield. With it, you can display two lines of text with up to 16 characters. That allows you to show text messages or sensor data to the user, for example.

The LCD Nanoshield uses an I2C communication interface, allowing greater flexibility when connecting it together with other Nanoshields:

  • You can connect it together with other Nanoshields that use I2C communications without any conflicts.
  • Only two Arduino pins are used for all communication, freeing more pins for other functions.
  • You can connect many independent LCDs on your project at the same time (up to eight!).

The internal LCD controller is compatible with the HD44780 chip from Hitachi, a de facto standard in the market for this kind of LCD. This is the same standard used in the LCD library that comes with the Arduino IDE.

To use the LCD Nanoshield, we provide an Arduino library that allows you to easily control the LCD using only two I/O pins of the I2C interface.


Top view (click to enlarge)


Bottom view (click to enlarge)

!Arduino + Base Board Uno connection

The easiest way to use the LCd Nanoshield with an Arduino is to use the Base Board Uno or the Base Board L Uno. You just need to snap the boards together and upload our sample code to verify it's working (see the code samples section below). This type of connection can be used with Arduino UNO, Mega R3, Duemilanove, and similar boards (contact us if you have questions about compatibility with other versions). The picture below shows how the final assembly looks like.

Connecting to an Arduino using the Base Board Uno (click to enlarge)

!Base Boarduino connection

It is also possible to connect the LCd Nanoshield to our Arduino-compatible microcontroller board, the Base Boarduino. The connection is done in the same way as with the Base Board, as shown in the picture below. You just need to snap the boards together and upload our sample code to verify it's working (see the code samples section below).

Connecting to a Base Boarduino (click to enlarge)

!Direct connection

By using the Mini Terminal Nanoshield, it is possible to securely connect the LCD Nanoshield to an Arduino equipped with a Base Board or to a Base Boarduino. This connection uses only five wires, and is useful when the LCD needs to be mounted away from the Base Board – for instance when if must be mounted on a panel or case. The diagram below shows how to make that connection.

Connection using a Mini Terminal (click to enlarge)

!Arduino wiring

The following diagram show how to connect the LCD Nanoshield directly to an Arduino UNO or an Arduino Mega.

Connecting to an Arduino UNO (click to enlarge)

Connecting to an Arduino Mega (click to enlarge)


LCD Arduino Função
SDA A4 I2C data line
SCL A5 I2C clock line
VIN VIN External power supply
VCC VCC 5V external power supply
3V3 3V3 3.3V external power supply (optional)
GND GND Ground
Pinout table


  • Communication with the microcontroller via I2C interface.
  • HD44780-compatible LCD controller.
  • Selection of 8 possible I2C addresses by solder jumpers (download the schematics below for details).
  • Potentiometer for contrast adjustment.
  • Software-controlled backlight switch.
  • Internal voltage regulator, reducing the extra load on the Arduino internal regulator.
  • I2C interface voltage selection between 5V or 3.3V (via solder jumper)


LCD Nanoshield block diagram


The LCD is equipped with a backlight that can be controlled via software by using the backlight() and noBacklight() methods in our Nanoshield_LCD software library.

Note: with the backlight on, the power consumption of the board is relatively high, and the voltage regulator can get quite hot when the system is powered from an external power supply. Don't worry however, since the board and the components were designed to operate with much higher temperatures without a risk of overheating (but probably you fingers weren't, so beware). For applications where the ambient temperature is consistently higher than 50ºC and there is no airflow, we recommend use of an external power supply with a maximum voltage of 9V, or our PowerLDO Nanoshield.

Electrical specifications

  • Power supply: the board power is supplied via the VIN and VCC pins: VIN is optional but VCC is required. The recommended voltage range for the VIN pin is 7 to 12V (absolute maximum of 20V); the range for the VCC pin is 4.5 to 5.5V (5V typical). When there is power available in both pins, the VIN pin has priority and will be selected automatically to power up the LCD module and the backlight; in cases where there is no VIN available, the VCC pin will power up the whole board. The I2C expander comes pre-configured to work with 5V levels, using the voltage available on the VCC pins, but can also be configured to use 3.3V levels when this voltage is selected in the VI2C jumper on the board - donwload the schematics below for more details).

  • Power consumption: the maximum current draw is about 200mA.

  • Voltage levels: the I2C interface comes pre-configured to work with 5V voltage levels.

!Sample code

Use our Nanoshield_LCD Arduino library to control the LCD Nanoshield. It includes an LCD test code in the examples folder.

To run a quick test, you can plug the LCD Nanoshield into your Arduino or simialr using one of the methods above, and then run the example below.


  • HD44780 - Wikipedia page with more information about the HD44780 controller.

Previous versions

  • Version 1.0 - Documentation for the 1.0 version of the LCD Nanoshield.