Interfacing I2C LCD With Arduino UNO
by Rachana Jain in Circuits > Arduino
14 Views, 0 Favorites, 0 Comments
Interfacing I2C LCD With Arduino UNO
.jpg)
When connecting a standard LCD display to an Arduino, you'll quickly notice that it requires multiple I/O pins. In 4-bit mode, for example, it typically uses at least six pins, which can significantly limit the number of remaining pins for other sensors or modules.
To overcome this limitation, you can use an I2C LCD display, which communicates via the I2C protocol and requires only two pins—SDA and SCL. These are not regular digital I/O pins, and best of all, they can be shared with multiple I2C-compatible devices, making your project much more efficient.
In this tutorial, we’ll show you how to interface an I2C LCD with an Arduino UNO and display text, custom characters, and numbers. Let’s get started!
Supplies
What Is an I2C LCD Module?

An I2C LCD module is typically a 16×2 LCD (16 columns, 2 rows) that communicates using the I2C protocol. I2C (Inter-Integrated Circuit) is a serial communication protocol that allows multiple devices to communicate over just two wires:
- SDA (Serial Data Line)
- SCL (Serial Clock Line)
I2C LCD Hardware Overview
1. Character LCD Display
The character LCD is designed to display alphanumeric characters. A 16×2 LCD can show up to 32 characters (16 per row). Each character is drawn within a tiny grid of 5×8 pixels, where specific pixels can be turned ON or OFF to form letters, numbers, or symbols.
2. I2C LCD Adapter Module
The I2C adapter makes it possible to control the LCD with just two pins. It includes:
- PCF8574 Chip: An 8-bit I/O expander that converts serial I2C data into parallel data required by the LCD.
- Trimpot (Potentiometer): Used to adjust the display contrast.
- Jumper: It powers the Backlight. You can remove the jumper and connect an external voltage to the LED pin or use a potentiometer to control the backlight brightness.
I2C LCD Pinout

The I2C LCD module has four pins, which simplifies wiring:
- GND: Connect to Arduino GND or an external power ground.
- VCC: Connect to 5V on the Arduino or an external 5V power source.
- SDA (Serial Data): Connects to Arduino's SDA pin.
- SCL (Serial Clock): Connects to Arduino's SCL pin.
Wiring an I2C LCD Display With Arduino

Connecting an I2C LCD to an Arduino UNO is straightforward and requires minimal wiring.
- VCC of the I2C LCD module connects to the 5V pin on the Arduino.
- GND connects to the GND pin on the Arduino.
- SDA (Serial Data Line) connects to the SDA pin on the Arduino.
- SCL (Serial Clock Line) connects to the SCL pin on the Arduino.
On the Arduino UNO, the SDA and SCL lines are shared with analog pins A4 and A5, respectively:
- SDA = A4 (Blue wire)
- SCL = A5 (Pink wire)
When using the I2C interface, avoid using pins A4 and A5 for analog input, as they are occupied by the I2C communication. Make sure the A0, A1, and A2 address jumpers on the I2C module are not shorted. This ensures the I2C LCD address remains 0x27, which we will use in our Arduino code.
Arduino Code
In this Arduino sketch, we’ll print “Hello” on the first line and “PlayWithCircuit” on the second line of the 16×2 LCD display.
Learn More: How to Create and Display Custom Characters on an I2C LCD