bilibili-视频演示
2.8寸触控屏和开发板
使用MicroPython单独设置屏幕xpt2046触控
github地址
https://github.com/rdagger/micropython-ili9341
MicroPython ILI9341Display & XPT2046 触摸屏驱动程序
本文仍然使用lv_micropyhon的ili9431驱动画图形化元素
但是单独使用micropython-ili9341使用xpt2046设置屏幕触控(没有lvgl联动)
参考文档
https://github.com/rdagger/micropython-ili9341/blob/master/demo_touch.py
核心代码
from xpt2046 import Touch
from machine import idle, Pin, SPI
spi2 = SPI(2, baudrate=1000000, sck=Pin(18), mosi=Pin(23), miso=Pin(19))
touch = Touch(spi2, cs=Pin(5), int_pin=Pin(0),
int_handler=self.touchscreen_press)
前提条件
-
刷入MicroPython+LVGL固件(ESP32)
-
micropython-ili9341依赖文件xpt2046.py放入ESP32
-
使用本文的小黄版(如果了解接线引脚,可以使用自己的开发板和屏幕)
代码
import lvgl as lv
import time
from espidf import VSPI_HOST,HSPI_HOST
from ili9XXX import ili9341
import fs_driver
from machine import Pin, SPI
from xpt2046 import Touch
# 屏幕宽高
WIDTH = 320
HEIGHT = 240
# # 创建显示屏对象
disp = ili9341(miso=12, mosi=13, clk=14, cs=15, dc=2, rst=12, power=-1, backlight=21, backlight_on=1, power_on=1, rot=0x20,
spihost=HSPI_HOST, mhz=60, factor=16, hybrid=True, width=WIDTH, height=HEIGHT,
invert=False, double_buffer=True, half_duplex=False, initialize=True)
def test( x, y):
print("屏幕中断处理程序", x, y)
spi2 = SPI(2, baudrate=1000000, sck=Pin(25), mosi=Pin(32), miso=Pin(39))
touch=Touch(spi2,cs=Pin(33), int_pin=Pin(36),int_handler=test)
# # 1. 创建显示screen对象。将需要显示的组件添加到这个screen才能显示
scr = lv.obj() # scr====> screen 屏幕
fs_drv = lv.fs_drv_t()
fs_driver.fs_register(fs_drv, 'S')
scr = lv.scr_act()
scr.clean()
class Event_1():
def __init__(self):
self.cnt = 1
#
# Add click event to a button
#
btn = lv.btn(lv.scr_act())
btn.set_size(100, 50)
btn.center()
btn.add_event(self.event_cb, lv.EVENT.CLICKED, None)
label = lv.label(btn)
label.set_text("Click me!")
label.center()
def event_cb(self,e):
print("Clicked")
btn = e.get_target_obj()
label = btn.get_child(0)
label.set_text(str(self.cnt))
self.cnt += 1
evt1 = Event_1()
本文固件lvgl为master分支
本文触控和lvgl没有联动效果,仅用于记录触控点击屏幕,适用于一些简单的开关等图形化元素
往期文章
《2.8寸触控屏和ESP32使用ESP_IDF和C语言编译LVGL移植写自定义可点击按钮》
END