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 Touchfrom machine import idle, Pin, SPIspi2 = 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 lvimport timefrom espidf import VSPI_HOST,HSPI_HOSTfrom ili9XXX import ili9341import fs_driverfrom machine import Pin, SPIfrom xpt2046 import Touch# 屏幕宽高WIDTH = 320HEIGHT = 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 += 1evt1 = Event_1()
本文固件lvgl为master分支
本文触控和lvgl没有联动效果,仅用于记录触控点击屏幕,适用于一些简单的开关等图形化元素
往期文章
《2.8寸触控屏和ESP32使用ESP_IDF和C语言编译LVGL移植写自定义可点击按钮》
END
