物联网开发笔记(62)- 使用Micropython开发ESP32开发板之控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程:环境搭建

news2024/11/25 5:55:57

一、目的

        这一节我们学习如何使用我们的ESP32开发板来控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程的第一步:环境搭建。

关键字:3.2寸SPI串口TFT液晶显示屏模块 ILI9341驱动 LCD触摸屏 240*320 LVGL图形化编程 XPT2046触摸屏芯片IC

二、环境

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

接线方法:

 上图接线比较多,显得乱,大家看下面表格连接即可:

ILI9341屏幕ESP32开发板
VCC5V或3.3V
GNDGND
CSD5
RESETD27
DCD26
SDI(MOSI)D23
SCKD18
LED5V
SDO(MISO)D19
T_CLKD18
T_CSD5
T_DIND23
T_OUTD19
T_IRQ不连接

三、固件烧录

        大家下载如下固件就行烧录,此固件只适用于ESP32。烧录方法前面文章讲过,大家往前翻一下。找不到留言给我。固件名字:lv_micropython.v1.19.1-ili9341-xpt2046.bin

链接: https://pan.baidu.com/s/16S0r9m8j65zITQ0UPCty4A 提取码: umi1 复制这段内容后打开百度网盘手机App,操作更方便哦

四、代码

        我们编写一段代码,测试下环境是否搭建成功:

import lvgl as lv
import time
from espidf import VSPI_HOST
from ili9XXX import ili9341
from xpt2046 import xpt2046


# ------------------------------ 屏幕初始化操作 --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)
# ------------------------------ 屏幕初始化操作 --stop------------------------


# 1. 创建显示screen对象。将需要显示的组件添加到这个screen才能显示
scr = lv.obj()


# 2. 封装的需要显示的按钮
class CounterBtn():
    def __init__(self, scr):
        self.cnt = 0
        btn = lv.btn(scr)  # 将当前按钮与screen对象进行关联
        # btn.set_pos(20, 10)  # 相对于屏幕左上角 x为20,y为10
        btn.set_size(120, 50)  # 设置按钮的宽度为120, 高度为50
        btn.align(lv.ALIGN.CENTER,0,0)  # 居中(第1个0表示x的偏移量,第2个0表示相对于y的偏移量)
        btn.add_event_cb(self.btn_event_cb, lv.EVENT.ALL, None)  # 设置按钮被按下后的回调函数
        label = lv.label(btn)  # 在按钮上创建一个标签Label,用来显示文字用
        label.set_text("Button")  # 设置文字内容
        label.center()  # 相对于父对象居中

    def btn_event_cb(self, evt):
        code = evt.get_code()  # 获取点击事件类型码
        btn = evt.get_target()  # 获取被点击的对象,此时就是按钮
        if code == lv.EVENT.CLICKED:
            self.cnt += 1

        # Get the first child of the button which is the label and change its text
        label = btn.get_child(0)
        label.set_text("Button: " + str(self.cnt))  # 修改文字内容


# 3. 创建按钮
counterBtn = CounterBtn(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已经重启...")
# ------------------------------ 看门狗,用来重启ESP32设备 --stop-------------------------

五、演示效果

 我们点一下下图屏幕中的按钮,数字就加1

六、购买

屏幕某宝链接如下:我买的普亮款(触控IC的型号是XPT2046)

搜索关键字 “3.2寸SPI串口TFT液晶显示屏模块 ILI9341驱动 LCD触摸屏 240*320”
https://item.taobao.com/item.htm?spm=a1z09.2.0.0.6cde2e8dECy2Od&id=652798852741&_u=bp01rch9a4e

 

ESP32 开发板某宝链接如下:我买的第一个

https://item.taobao.com/item.htm?spm=a1z09.2.0.0.6cde2e8dECy2Od&id=559077746939&_u=bp01rch2cbd




七、项目分享

我在gitee找到的Micropython + lvgl的开源代码:

lv_micropython: Micropython bindings to LVGL for Embedded devices, Unix and JavaScripthttps://toscode.gitee.com/michaelhyg/lv_micropython

 

同时找到了一个很不错的国外的网站,都是英文:

Awesome MicroPythonA curated list of MicroPython libraries, frameworks, software and resources.https://awesome-micropython.com/

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/89326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实机安装CentOS7.9操作系统图文(保姆级)教程

一、制作启动U盘 1、下载Ventoy软件 去Ventoy官网下载Ventoy软件(Download . Ventoy)如下图界面 ​ 2、制作启动盘 选择合适的版本以及平台下载好之后,进行解压,解压出来之后进入文件夹,如下图左边所示&#xff0c…

Hive 之数据透视表

文章目录什么是数据透视表?创建数据源基于各产品在各个平台半年内的月销售额与汇总,制作数据透视表什么是数据透视表? 数据透视表是一种工具,用于帮助用户理解和分析大量数据。它通常是一个二维表格,可以让用户以不同…

java计算机毕业设计springboot+vue航空公司电子售票系统-机票预订系统

项目介绍 通篇文章的撰写基础是实际的应用需要,然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程,以远程教育系统的实际应用需要出发,架构系统来改善现远程教育系统工作流程繁琐等问题。不仅如此以操作者的角度来说,该系统的架构能够对多媒体课程进…

手把手教你使用SpringBoot做一个员工管理系统【代码篇·下】

手把手教你使用SpringBoot做一个员工管理系统【代码篇下】1.增加员工实现2.修改员工信息3.删除员工4.404页面配置5.注销1.增加员工实现 新增添加员工的按钮&#xff1a; <h2><a class"btn btn-sm btn-success" th:href"{/addemp}">添加员工&…

0- LVGL移植基于野火STM32F429挑战者(LVGL8.2)

1-移植准备 LVGL8.2 野火STM32F429_v2开发板 因为ST在STM32F4之后所有的芯片都不在有标准库,因此本篇是基于HAL库的。同时现在有许多厂商都不在有标准库了,都是根据自己的开发环境进行一些基本芯片接口的配置。像NXP,ST等。 这里不过多介绍LVGL,既然看到这个文章,大多数是…

20221214英语学习

今日新词&#xff1a; minus prep.减去&#xff1b;&#xff08;温度&#xff09;零下 garlic n.【植】大蒜 linger v.停留&#xff0c;逗留&#xff1b;徘徊&#xff1b;继续留存&#xff0c;缓慢消失&#xff1b;苟延残喘 sarcastic adj.讽刺的, 嘲讽的, 挖苦的 data n.…

【LeetCode每日一题】——572.另一棵树的子树

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 树 二【题目难度】 简单 三【题目编号】 572.另一棵树的子树 四【题目描述】 给你两棵二叉树…

MySQL索引优化(二)

文章目录一、查询优化1. 索引失效&#xff08;1&#xff09;不满足最左前缀法则&#xff0c;索引失效&#xff08;2&#xff09;在索引列上做任何计算、函数操作&#xff0c;索引失效&#xff08;3&#xff09;存储引擎使用索引中范围条件右边的列&#xff0c;索引失效&#xf…

倪健中会长应邀出席首届世界数贸易博览会致辞:把杭州打造成全球数字贸易元宇宙之都

12月11日至14日&#xff0c;首届全球数字贸易博览会在浙江省杭州市盛大举办。博览会由浙江省人民政府和商务部联合主办&#xff0c;杭州市人民政府、浙江省商务厅和商务部贸发局共同承办&#xff0c;主题为“数字贸易商通全球”&#xff0c;爱尔兰为主宾国&#xff0c;北京、上…

大航海时代:葡萄牙、西班牙率先出发,英国为何成为最大赢家?

欧洲经历了长达千年的中世纪以后&#xff0c;忽然开始自我反省了。为啥&#xff1f;因为打了上千年&#xff0c;不仅社会没进步&#xff0c;反而因为各种瘟疫、战争&#xff0c;把人口搞掉了一大半。 这么玩下去&#xff0c;日耳曼人的各大分支&#xff0c;可能都要完犊子了&a…

基于java+springboot+mybatis+vue+mysql的智能热度分析和自媒体推送平台

项目介绍 前端页面&#xff1a; 功能&#xff1a;首页、文章信息、图片信息、视频信息、个人中心、后台管理 管理员后台管理页面&#xff1a; 功能&#xff1a;首页、个人中心、用户管理、文章类型管理、文章信息管理、图片类型管理、图片信息管理、视频类型管理、视频信息管…

数据工厂刷新PowerBI数据集2

前面已经介绍过数据工厂中刷新PowerBI数据集&#xff0c;我们先发起一个web请示获取了token&#xff0c;然后再把token传入到接口中从而刷新数据集。 但是&#xff0c;明明都是微软家的产品&#xff0c;竟然还需要先获取token?明明Power Apps、Power Automate里都不需要的啊&…

茶文化推广网站

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 网型站前台&#xff1a;网站个介绍、帮助信总、茶文化、茶叶分享、讨论信总 管理功能&#xff1a; 1、管理网站介绍、帮…

刚做外贸,先做平台好还是独立站好?

作为亚马逊这样的平台卖家&#xff0c;依托平台完善的第三方服务和流量红利&#xff0c;很容易将产品卖到海外。如今&#xff0c;随着平台要求越来越严格&#xff0c;管理政策越来越多变&#xff0c;用户需求也越来越多样化和苛刻&#xff0c;卖家在平台上经营店铺的一些问题正…

[附源码]Python计算机毕业设计SSM基于Web的摄影爱好者交流社区(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Clone使用

实现克隆接口:clone方法是默认是Object的方法 1)这个接口是一个标记性的接口(空接口)&#xff0c;他们内部都没有方法和属性&#xff0c;实现这个接口表示这个对象都可以进行克隆&#xff0c;我们调用Object对象的Object.clone()方法&#xff0c;如果没有实现Cloneable的类对象…

【云原生】k8s声明式资源管理

内容预知 1.资源配置清单的管理 1.1 查看资源配置清单 1.2 修改资源配置清单并应用 离线修改 在线修改 1.3 删除资源配置清单 2.自主编写资源清单 2.1 初步认识资源清单中svc的重要配置项 2.2 手动编写 svc资源配置 3.手动生成模板&#xff0c;再编写资源清单 &#x…

解决虚拟机IP地址无法获取和网络无法连接

首先看一下电脑的end33分配成功没有 ifconfig或者使用ip addr查询都可以 ip addr 目录 1.首先看看你的网络连接模式是不是NAT 2.去主机电脑服务查看这四个服务是否开启 3.查看虚拟机子网ip是否分配了 4.修改我们的网卡配置文件&#xff0c;使用下面命令进入文件 5.重启网…

jemeter 压测并生成报告

文章目录前言一、压测步骤1.1 创建jvm文件1.2 压测生成测试文件及html压测结果二、结果分析前言 jmeter&#xff1a;是Apche公司使用Java平台开发的一款测试工具。 一、压测步骤 1.1 创建jvm文件 添加测试计划 &#xff08;当打开jmeter默认有一个测试计划&#xff09;添加…

高并发下解决AtomicLong性能瓶颈的方案——LongAdder

一、 LongAdder简介 LongAdder类是JDK1.8新增的一个原子性操作类。上一节说到&#xff0c;AtomicLong通过CAS提供了非阻塞的原子性操作&#xff0c;相比用阻塞算法的synchronized来说性能已经得到了很大提升。在高并发下大量线程会同时竞争更新同一个原子变量&#xff0c;但由…