Arduino Giga R1 WiFi LCD I2C
This is a compact build guide. The full tutorial, with the wiring diagram and a line-by-line walkthrough of the code, is here: https://newbiely.com/tutorials/arduino-giga/arduino-giga-r1-wifi-lcd-i2c
This guide shows how to wire and program an I2C LCD with the Arduino Giga R1 WiFi. The I2C backpack cuts the wiring from the usual 12 pins down to 4 (GND, VCC, SDA, SCL), making it much easier to add a character display to a project. The example covers basic text output, cursor positioning, and the library calls needed to drive the display.
Supplies
Everything below is what the build uses. The links go to the parts we make and test.
- Arduino Giga R1 WiFi
- USB Cable Type-A to Type-C (for USB-A PC)
- USB Cable Type-C to Type-C (for USB-C PC)
- LCD I2C Display 3.3V
- LCD I2C 20x4
- Jumper Wires
- Screw Terminal Block Shield for Arduino Uno/Mega/Giga
- Sensors/Servo Expansion Shield for Arduino Mega/Giga
- Breadboard Shield for Arduino Mega/Giga
- Enclosure for Arduino Giga
- Power Splitter for Arduino Giga
- DIYables Sensor Kit (18 sensors/displays)
Wiring
Connect GND on the LCD I2C module to GND on the Giga R1 WiFi, and VCC to the Arduino 5V pin, which can source up to 800mA. Connect SDA to the Arduino's SDA2 pin (pin 9) and SCL to SCL2 (pin 8). Use the 3.3V LCD I2C display recommended for this board; most LCD I2C modules on the market are 5V and, while the Giga's I2C pins are 5V tolerant, a 3.3V display is the safer choice.
How It Works
The LCD I2C module combines a standard HD44780-compatible character LCD with a PCF8574 I2C interface chip that converts I2C commands into the parallel signals the LCD controller expects. Built-in 4.7kΩ pull-up resistors on the module make it compatible with the Giga's hardware I2C controller without extra components. The display is addressed as a 16x2 grid using zero-based coordinates, from (0,0) at top-left to (15,1) at bottom-right, and setCursor(column, row) selects where the next printed character goes.
Code
The sketch includes the DIYables_LCD_I2C library, which handles the I2C protocol, LCD initialization, and character encoding internally. You create a DIYables_LCD_I2C object with the I2C address plus the number of columns and rows, call its init function to set up the display, then use setCursor(column, row) to position the cursor and print() to write text at that position.
arduino-giga-r1-wifi-lcd-i2c.ino - the sketch from the tutorial, unchanged.
Full Tutorial
The complete tutorial, wiring diagram and code explanation: https://newbiely.com/tutorials/arduino-giga/arduino-giga-r1-wifi-lcd-i2c