forked from embedded/micropython-ili9341
Add simple touch demo.
parent
a0020068f5
commit
822d769710
@ -0,0 +1,64 @@
|
|||||||
|
"""ILI9341 demo (simple touch demo)."""
|
||||||
|
from ili9341 import Display, color565
|
||||||
|
from xpt2046 import Touch
|
||||||
|
from machine import idle, Pin, SPI # type: ignore
|
||||||
|
|
||||||
|
|
||||||
|
class Demo(object):
|
||||||
|
"""Touchscreen simple demo."""
|
||||||
|
CYAN = color565(0, 255, 255)
|
||||||
|
PURPLE = color565(255, 0, 255)
|
||||||
|
WHITE = color565(255, 255, 255)
|
||||||
|
|
||||||
|
def __init__(self, display, spi2):
|
||||||
|
"""Initialize box.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
display (ILI9341): display object
|
||||||
|
touch (XPT2046): touchscreen object
|
||||||
|
"""
|
||||||
|
self.display = display
|
||||||
|
self.touch = Touch(spi2, cs=Pin(5), int_pin=Pin(0),
|
||||||
|
int_handler=self.touchscreen_press)
|
||||||
|
# Display initial message
|
||||||
|
self.display.draw_text8x8(self.display.width // 2 - 32,
|
||||||
|
self.display.height - 9,
|
||||||
|
"TOUCH ME",
|
||||||
|
self.WHITE,
|
||||||
|
background=self.PURPLE)
|
||||||
|
|
||||||
|
# A small 5x5 sprite for the dot
|
||||||
|
self.dot = bytearray(b'\x00\x00\x07\xE0\xF8\x00\x07\xE0\x00\x00\x07\xE0\xF8\x00\xF8\x00\xF8\x00\x07\xE0\xF8\x00\xF8\x00\xF8\x00\xF8\x00\xF8\x00\x07\xE0\xF8\x00\xF8\x00\xF8\x00\x07\xE0\x00\x00\x07\xE0\xF8\x00\x07\xE0\x00\x00')
|
||||||
|
|
||||||
|
def touchscreen_press(self, x, y):
|
||||||
|
"""Process touchscreen press events."""
|
||||||
|
# Y needs to be flipped
|
||||||
|
y = (self.display.height - 1) - y
|
||||||
|
# Display coordinates
|
||||||
|
self.display.draw_text8x8(self.display.width // 2 - 32,
|
||||||
|
self.display.height - 9,
|
||||||
|
"{0:03d}, {1:03d}".format(x, y),
|
||||||
|
self.CYAN)
|
||||||
|
# Draw dot
|
||||||
|
self.display.draw_sprite(self.dot, x - 2, y - 2, 5, 5)
|
||||||
|
|
||||||
|
|
||||||
|
def test():
|
||||||
|
"""Test code."""
|
||||||
|
spi1 = SPI(1, baudrate=40000000, sck=Pin(14), mosi=Pin(13))
|
||||||
|
display = Display(spi1, dc=Pin(4), cs=Pin(16), rst=Pin(17))
|
||||||
|
spi2 = SPI(2, baudrate=1000000, sck=Pin(18), mosi=Pin(23), miso=Pin(19))
|
||||||
|
|
||||||
|
Demo(display, spi2)
|
||||||
|
|
||||||
|
try:
|
||||||
|
while True:
|
||||||
|
idle()
|
||||||
|
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
print("\nCtrl-C pressed. Cleaning up and exiting...")
|
||||||
|
finally:
|
||||||
|
display.cleanup()
|
||||||
|
|
||||||
|
|
||||||
|
test()
|
Loading…
Reference in New Issue