In this article we look at another few examples to display on an I2C 16×2 LCD to a raspberry Pi Pico
Parts Required
| Name | Link |
| Pico | Raspberry Pi Pico Development Board |
| I2C lCD | |
| Connecting cables | Aliexpress product link |
Schematic/Connection
To connect the display to your Raspberry PI Pico requires just 4 wires, you just need to wire the Vcc and GND PINs from display to VBuS and a GND PINs of RPI Pico, then SDA and SCL PINs from the module to suitable SDA and SCL PINs from Raspberry PI Pico
Here is a layout in fritzing to show this
Code Examples
I use thonny for all development – we have kept this information from our 16×2 LCD article
You then need to copy 2 libraries to your Pico filesystem
In Thonny, go to top menu File => Save Copy => Raspberry Pi Pico and save each file to the board with the same name as downloaded and with a .PY extension when saving it to the board.
| https://github.com/T-622/RPI-PICO-I2C-LCD/blob/main/lcd_api.py |
| https://github.com/T-622/RPI-PICO-I2C-LCD/blob/main/pico_i2c_lcd.py |
In this example we display the 3 custom characters that we designed earlier
Counter
This simply counts from 0 to 10 and displays it on the lcd
import machine
from machine import I2C
from lcd_api import LcdApi
from pico_i2c_lcd import I2cLcd
from time import sleep
I2C_ADDR = 0x27
totalRows = 2
totalColumns = 16
i2c = I2C(0, sda=machine.Pin(0), scl=machine.Pin(1), freq=400000)
lcd = I2cLcd(i2c, I2C_ADDR, totalRows, totalColumns)
while True:
lcd.putstr("Count - 0-10")
sleep(2)
lcd.clear()
for i in range(10):
lcd.putstr(str(i))
sleep(1)
lcd.clear()
Another example
This displays the I2C address on the LCD in hex and then in decimal, it also displays txt on the LCD. We then switch the backlight on and off. We then count to 20.
from machine import I2C, Pin
from time import sleep
from pico_i2c_lcd import I2cLcd
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
I2C_ADDR = i2c.scan()[0]
lcd = I2cLcd(i2c, I2C_ADDR, 2, 16)
while True:
print(I2C_ADDR)
lcd.blink_cursor_on()
lcd.putstr("I2C Address:"+str(I2C_ADDR)+"\n")
lcd.putstr("rp2040learning")
sleep(2)
lcd.clear()
lcd.putstr("I2C Address:"+str(hex(I2C_ADDR))+"\n")
lcd.putstr("rp2040learning")
sleep(2)
lcd.blink_cursor_off()
lcd.clear()
lcd.putstr("Backlight Test")
for i in range(10):
lcd.backlight_on()
sleep(0.2)
lcd.backlight_off()
sleep(0.2)
lcd.backlight_on()
lcd.hide_cursor()
for i in range(20):
lcd.putstr(str(i))
sleep(1)
lcd.clear()
Links