You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.5 KiB
Python

7 months ago
"""ILI9341 demo (mirror)."""
from time import sleep
from ili9341 import Display, color565
from machine import Pin, SPI # type: ignore
# Define colors
COLOR_RED = color565(255, 0, 0)
COLOR_BLUE = color565(0, 0, 255)
COLOR_GREEN = color565(0, 255, 0)
COLOR_YELLOW = color565(255, 255, 0)
COLOR_PURPLE = color565(128, 0, 128)
COLOR_CYAN = color565(0, 255, 255)
COLOR_MAGENTA = color565(255, 0, 255)
COLOR_ORANGE = color565(255, 165, 0)
COLOR_WHITE = color565(255, 255, 255)
COLOR_LAVENDER = color565(255, 165, 255)
MIRROR_ROTATE = ((False, 0),
(False, 90),
(False, 180),
(False, 270),
(True, 0),
(True, 90),
(True, 180),
(True, 270))
def test():
"""Test code."""
for mirror, rotation in MIRROR_ROTATE:
# Baud rate of 40000000 seems about the max
spi = SPI(1, baudrate=40000000, sck=Pin(14), mosi=Pin(13))
# Set width & height based on rotation
if rotation == 0 or rotation == 180:
width, height = 240, 320
else:
width, height = 320, 240
display = Display(spi, dc=Pin(4), cs=Pin(16), rst=Pin(17),
width=width, height=height,
rotation=rotation, mirror=mirror)
display.clear()
# Outer Vertical Line
display.draw_line(41, 21, 41, 239, COLOR_RED)
# Inner Vertical Line
display.draw_line(61, 41, 61, 239, COLOR_BLUE)
# Outer Top Horizontal Line
display.draw_line(41, 21, 181, 21, COLOR_GREEN)
# Inner Top Horizontal Line
display.draw_line(61, 41, 181, 41, COLOR_YELLOW)
# Outer Middle Horizontal Line
display.draw_line(62, 130, 161, 130, COLOR_PURPLE)
# Inner Middle Horizontal Line
display.draw_line(62, 111, 161, 111, COLOR_CYAN)
# End Cap on Outer Vertical Line (Bottom)
display.draw_line(41, 239, 61, 239, COLOR_MAGENTA)
# End Cap on Outer Top Horizontal Line (Right)
display.draw_line(181, 21, 181, 41, COLOR_ORANGE)
# End Caps on Inner Lines (Middle)
display.draw_line(162, 111, 162, 130, COLOR_WHITE)
# Display rotation and mirror values at bottom of display
text = f"Rotation: {rotation}, Mirror: {mirror}"
display.draw_text8x8(
(width - len(text) * 8) // 2 if width < 320 else 90,
height - 50 if width < 320 else height - 9,
text,
COLOR_LAVENDER)
sleep(5)
display.cleanup()
test()