# Pico has two (2) I2C buses
# https://datasheets.raspberrypi.com/pico/Pico-R3-A4-Pinout.pdf
# I2C0:
# SDA,SDL: 0,1 | 4,5 | 8,9 | 12,13 | 16,17 | 20,21
# I2C1:
# SDA,SDL: 2,3 | 6,7 | 10,11 | 14,15 | 18,19 | 26,27
import board
import busio
import time
import hd44780
# using I2C0
i2c = busio.I2C(scl=board.GP5, sda=board.GP4)
# First, set unique addresses in diagram.json
# then scan
while not i2c.try_lock():
pass
print(
"I2C addresses found:",
[hex(device_address) for device_address in i2c.scan()],
)
i2c.unlock()
# each display uses same I2C but but different addresses
display = hd44780.HD44780(i2c,0x27)
display2 = hd44780.HD44780(i2c,0x25)
while True:
try:
display.clear()
display.write("Hello",1)
display.write("CircuitPython",2)
time.sleep(1)
display2.write("Two Displays",1)
display2.write("are possible",2)
time.sleep(1)
display.clear()
display.write("This is fun!",1)
time.sleep(1)
display2.clear()
display2.write("Goodbye",2)
time.sleep(1)
display2.clear()
except:
break