Code: Select all
#tft test rPi4 on spi0
import time
import digitalio
import board
import displayio
from PIL import Image, ImageDraw
from adafruit_rgb_display import color565
import adafruit_rgb_display.ili9341 as ili9341
import adafruit_rgb_display.hx8357 as hx8357
# Configuration for CS and DC pins
cs0_pin = digitalio.DigitalInOut(board.D8)
dc0_pin = digitalio.DigitalInOut(board.D5)
reset0_pin = digitalio.DigitalInOut(board.D6)
cs1_pin = digitalio.DigitalInOut(board.D7)
dc1_pin = digitalio.DigitalInOut(board.D12)
reset1_pin = digitalio.DigitalInOut(board.D16)
cs2_pin = digitalio.DigitalInOut(board.D25)
dc2_pin = digitalio.DigitalInOut(board.D23)
reset2_pin = digitalio.DigitalInOut(board.D24)
# Config for display baudrate (default max is 24mhz):
BAUDRATE = 24000000
# Setup SPI bus using hardware SPI:
spi = board.SPI()
display2 = hx8357.HX8357(
spi,
# rotation=90,
cs=cs2_pin,
dc=dc2_pin,
rst=reset2_pin,
width=480,
height=320
)
display1 = ili9341.ILI9341(
spi,
# rotation=90,
cs=cs1_pin,
dc=dc1_pin,
rst=reset1_pin,
baudrate=BAUDRATE
)
display0 = ili9341.ILI9341(
spi,
# rotation=90,
cs=cs0_pin,
dc=dc0_pin,
rst=reset0_pin,
baudrate=BAUDRATE
)
xpos=120
ypos=160
# Main loop:
while True:
# Clear the display
display0.fill(0)
display1.fill(0)
display2.fill(0)
time.sleep(2)
# Draw a rectangle at x,y.
img2=Image.new("RGB",(45,45), "blue")
display2.image(img2, 0, xpos, ypos)
img1=Image.new("RGB",(45,45), "green")
display1.image(img1, 0, xpos, ypos)
img0=Image.new("RGB",(45,45), "red")
display0.image(img0, 0, xpos, ypos)
# Pause 2 seconds.
time.sleep(2)
# Clear the screen.
display2.fill(color565(175, 0, 0))
display1.fill(color565(95, 95, 255))
display0.fill(color565(0, 255, 0))
# Pause 1 second.
time.sleep(2)