使用Micropython开发ESP32开发板之控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程

一、目的


        这一节我们学习如何运用我们的ESP32开发板来控制ILI9341 3.2寸TFT-LCD触摸屏停止LVGL图形化编程:控件显现。


二、环境


        ESP32 + ILI9341 3.2寸TFT-LCD触摸屏+ Thonny IDE + 几根杜邦线


接线办法:见前面文章。


三、滑杆代码


import lvgl as lv

import time

from espidf import VSPI_HOST

from ili9XXX import ili9341

from xpt2046 import xpt2046

import fs_driver

# ------------------------------ 屏幕初始化操作 --start------------------------

# 屏幕宽高

WIDTH = 240

HEIGHT = 320

# 创立显现屏对象

disp = ili9341(miso=19, mosi=23, clk=18, cs=5, dc=26, rst=27, power=14, backlight=-1, backlight_on=0, power_on=0, rot=0x80,

        spihost=VSPI_HOST, mhz=60, factor=16, hybrid=True, width=WIDTH, height=HEIGHT,

        invert=False, double_buffer=True, half_duplex=False, initialize=True)

# 创立触摸屏对象

touch = xpt2046(cs=25, spihost=VSPI_HOST, mosi=-1, miso=-1, clk=-1, cal_y0 = 423, cal_y1=3948)  # 触摸屏芯片型号xpt2046

# ------------------------------ 屏幕初始化操作 --stop------------------------

# 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()

# 2. 封装要显现的组件

class MyWidget():

    def __init__(self, scr):

        # 创立滑块slider组件

        self.slider = lv.slider(scr)

        self.slider.set_width(180)  # 设置滑块的长度

        # self.slider.set_range(10, 50)  # 默许值是0-100

        self.slider.center()  # 在窗口的中间位置

        self.slider.add_event_cb(self.slider_event_cb, lv.EVENT.VALUE_CHANGED, None)  # 添加事情的回调函数

        # 创立一个标签label

        self.label = lv.label(scr)

        self.label.set_text("0")  # 默许值

        self.label.align_to(self.slider, lv.ALIGN.OUT_TOP_MID, 0, -15)  # label的中间与滑块的上外边框中间对齐,然后y向上15像素 x不变

    def slider_event_cb(self, evt):

        slider = evt.get_target()

        # 修正label的值

        self.label.set_text(str(slider.get_value()))

# 3. 创立要显现的组件

MyWidget(scr)

# 4. 显现screen对象中的内容

lv.scr_load(scr)

# ------------------------------ 看门狗,用来重启ESP32设备 --start------------------------

try:

    from machine import WDT

    wdt = WDT(timeout=1000)  # enable it with a timeout of 2s

    print("提示: 按下键盘Ctrl+C键完毕程序")

    while True:

        wdt.feed()

        time.sleep(0.9)

except KeyboardInterrupt as ret:

    print("程序中止运转,ESP32曾经重启...")

    time.sleep(10)

TAG: 树莓派原装Camera Module 3 Sensor Assembly IMX708 1190万相机模块传感器组件 自动对焦 树莓派DSI ESP32-C6迷你WiFi 6 ESP32-C6-Zero Super-Mini SP32-C6FH4 WiFi6蓝牙5 BPI-M4 Zero X872 树莓派4 USB转M.2 NVME SSD NAS固态存储扩展 支持硬盘启动 ESP32 LVGL T-Display-S3教程资料程序代码PDF手册 使用手册 14寸双显示屏 笔记本电脑扩展屏 LCD 1080P 内置重力感应 喇叭 ESP-IDF的下载和安装 ESP32手表1.54寸电子墨水屏E-lnk开源可编程Watch适用于Arduino For Watchy 智能串口显示屏 树莓派USB摄像头1200万IMX378 30fps双麦克风Jeston RDK 树莓派机器人 树莓派5 PCIE转M.2 NVME双SSD固态硬盘2CH-M.2-HAT+扩展板Pi5 树莓派5风扇 树莓派摄像头外壳 Milk-V Duo RJ45教程 EyeLink-RC-S1 5.5寸屏摄像头地面站FPV无人穿越机手柄图传遥控器 热像传感器