深圳晶彩智能ESP32-2432S028R实时观察LVGL9效果

深圳晶彩智能ESP32-2432S028R概述:

深圳晶彩智能出品ESP32-32432S028R为2.8寸彩色屏采用分辨率320x240彩色液晶屏,驱动芯片是ILI9431。板载乐鑫公司出品ESP-WROOM-32,Flash 4M。型号尾部“R”标识电阻膜的感压式触摸屏,驱动芯片是XPT2046。
他的屏幕驱动芯片ILI9431和电阻触碰芯片XPT2046没有采用共用SPI的接法,就不能直接使用TFT_eSPI库驱动,电阻触碰芯片采用第三方XPT2046_Touchscreen库。
这款产品发布后,由于其制作精良价格优惠,受到了国际玩家的普遍追捧,各位大虾称其为“Cheap Yellow Display”,简称CYD。
在这里插入图片描述
这是一个能干活的开发板,用于为您的物联网项目构建彩色显示屏,带有TFT屏幕的单独ESP32板更方便和实用,明显越升二次开发产品的格调。

在这里插入图片描述

完美得到LVGL9和lovyanGFX库支持

LVGL是最流行的免费和开源嵌入式图形库,可为任何MCU, MPU和显示类型创建漂亮的ui。
从消费电子产品到工业自动化,任何应用程序都可以利用LVGL的30多个内置小部件,100多个样式属性,web启发的布局和支持多种语言的排版系统。
LovyanGFX 是一个高效且功能丰富的图形库,专为连接到ESP32、ESP8266和ATSAMD51的显示器设计。它兼容多种通讯协议,如SPI、I2C和8位并行接口,适用于各种LCD、OLED和EPD显示屏。这个库不仅提供了与流行的AdafruitGFX和TFT_eSPI类似的功能,而且在速度和特性上有了显著提升,让开发变得更加便捷。
LGFX_AUTODETECT类中自动识别多款“Cheap Yellow Display”,其中就包括ESP32-2432S028R,本示例就结合这两个库,使用Arduino IDE的方法,用最快捷的方法让各位玩家来适配LVGL9,直接在液晶屏上操作各种组建,把构想变成实景图。

Arduino IDE SDK和LVGL9,LovyanGFX的版本

Arduino IDE SDK 3.0.2版本
在这里插入图片描述
lvgl 9.1.0版本
在这里插入图片描述
LovyanGFX 1.1.16版本
在这里插入图片描述

配置LVGL9库

1,修改 lv_conf.h

LVGL 有一个名为 lv_conf.h 的配置文件。当安装 LVGL 时,请遵循以下配置步骤:
进入已安装的 Arduino 库目录。
进入 lvgl 并复制 lv_conf_template.h 到Arduino 库目录中,该文件应位于 lvgl 库同级文件夹。然后重命名为 lv_conf.h 。
下图可见 lv_conf.h 的布局:
在这里插入图片描述
用Notepad++对 lv_conf.h 修改:
默认设置是“0”,设置为“1”以启用内容。

第15行 #if 1 

如果lvgl设置在屏幕上显示当前帧率(FPS):

第751行 #define LV_USE_SYSMON   1
第764行 #define LV_USE_PERF_MONITOR 1

在这里插入图片描述
本示例全面演示LVGL9的examples,widgets和demos,需要分别置1启用。譬如允许 examples构建示例:

第929行 #define LV_BUILD_EXAMPLES 1

2,移动examples和demos库的位置。
将Arduino\libraries\lvgl里的examples和demos库拖曳到src文件夹里面:
在这里插入图片描述
3,修改lv_examples.h
用Notepad++对C:\Users\用户名\Documents\Arduino\libraries\lvgl\src\examples\lv_examples.h修改为:

第16行 #include "lvgl.h"

用Notepad++对C:\Users\用户名\Documents\Arduino\libraries\lvgl\src\demos\lv_demos.h修改为:

第16行 #include "lvgl.h"

用最简单的程序展示LVGL9的绚丽功能

#include <SPI.h>                                      // SPI Library
#include <lvgl.h>                                     // LVGL9
#define LGFX_AUTODETECT
#include <LovyanGFX.hpp>static const uint32_t screenWidth = 320;                   // LCD宽度
static const uint32_t screenHeight = 240;                  // LCD高度
static uint8_t draw_buf[screenWidth * screenHeight / 10];  // 缓冲器
static ulong lvgl_tick_millis = millis();                  // tick#include <examples\lv_examples.h>                 // examples
//#include <examples\widgets\lv_example_widgets.h>  // widgets
//#include <demos\lv_demos.h>                       // demosLGFX tft;void init_display() {static lv_display_t *disp;disp = lv_display_create(screenWidth, screenHeight);lv_display_set_flush_cb(disp, flush);lv_display_set_buffers(disp, draw_buf, NULL, sizeof(draw_buf),LV_DISPLAY_RENDER_MODE_PARTIAL);
}void flush(lv_display_t *disp, const lv_area_t *area, uint8_t *px_map) {uint32_t w = (area->x2 - area->x1 + 1);uint32_t h = (area->y2 - area->y1 + 1);tft.startWrite();tft.setAddrWindow(area->x1, area->y1, w, h);//tft.pushColors((uint16_t *)px_map, w * h, true);tft.writePixelsDMA((lgfx::rgb565_t *)px_map, w * h);  // LGFXtft.endWrite();lv_display_flush_ready(disp);
}void init_touch() {lv_indev_t *indev = lv_indev_create();lv_indev_set_type(indev, LV_INDEV_TYPE_POINTER);  lv_indev_set_read_cb(indev, my_touchpad_read);
}void my_touchpad_read(lv_indev_t *indev, lv_indev_data_t *data) {uint16_t touchX, touchY;bool touched = tft.getTouch(&touchX, &touchY);if (!touched) {data->state = LV_INDEV_STATE_REL;return;}if (touchX < screenWidth && touchY < screenWidth) {data->state = LV_INDEV_STATE_PR;data->point.x = touchX;data->point.y = touchY;   }
}void setup() {tft.begin();tft.setRotation(1);tft.fillScreen(TFT_BLUE);lv_init();       // lvgl 初始化init_display();  // 显示和缓冲初始化init_touch();    // 触碰初始化// demos ------------------------------------------------------------//lv_demo_widgets();          // 34% memory used//lv_demo_benchmark();        // 38% memory used//lv_demo_keypad_encoder();   // 24% memory used//lv_demo_music();            // 56% memory used//get_started -------------------------------------------------------//lv_example_get_started_3(); // 2 button//lv_example_get_started_1(); // Hello World//lv_example_get_started_2(); // button couter//lv_example_get_started_4(); // Slider//others ------------------------------------------------------------//lv_example_observer_1();    // Slider//lv_example_observer_2();    // logged out//lv_example_observer_3();    // time & setlv_example_observer_4();    // Slider & Button//lv_example_observer_5();    // update//lv_example_observer_6();    // 10 button//widgets -----------------------------------------------------------//lv_example_image_3();//lv_example_animimg_1();//lv_example_arc_1();//lv_example_arc_2();//lv_example_bar_1();//lv_example_bar_2();//lv_example_bar_3();//lv_example_bar_4();//lv_example_bar_5();//lv_example_bar_6();//lv_example_bar_7();//lv_example_button_1();//lv_example_button_2();  // 24% memory used//lv_example_button_3();//lv_example_buttonmatrix_1();//lv_example_buttonmatrix_2();//lv_example_buttonmatrix_3();//lv_example_calendar_1();//lv_example_canvas_1 fail//lv_example_canvas_2();//lv_example_canvas_3();//lv_example_canvas_4();//lv_example_canvas_5();//lv_example_canvas_6();//lv_example_canvas_7();//lv_example_canvas_8 fail//lv_example_chart_1();//lv_example_chart_2();//lv_example_chart_3();//lv_example_chart_4();//lv_example_chart_5();//lv_example_chart_6();//lv_example_chart_7();//lv_example_chart_8();//lv_example_checkbox_1();//lv_example_checkbox_2();//lv_example_dropdown_1();//lv_example_dropdown_2();//lv_example_dropdown_3();//lv_example_image_1();//lv_example_image_2();//lv_example_image_4();//lv_example_imagebutton_1_fail//lv_example_keyboard_1();//lv_example_keyboard_2();//lv_example_label_1();//lv_example_label_2();//lv_example_label_3 fail//lv_example_label_4 fail//lv_example_label_5();//lv_example_led_1//lv_example_line_1//lv_example_menu_1//lv_example_menu_2//lv_example_menu_3//lv_example_menu_4//lv_example_menu_5//lv_example_msgbox_1//lv_example_obj_1//lv_example_obj_2//lv_example_roller_1//lv_example_roller_2 fail//lv_example_roller_3 fail//lv_example_scale_1();//lv_example_scale_2();//lv_example_scale_3();//lv_example_scale_4();//lv_example_scale_5();//lv_example_slider_1();//lv_example_slider_2();//lv_example_slider_3();//lv_example_slider_4();//lv_example_span_1();//lv_example_spinbox_1();//lv_example_spinner_1();//lv_example_switch_1();//lv_example_table_1();//lv_example_table_2();//lv_example_tabview_1();//lv_example_tabview_2();//lv_example_textarea_1();//lv_example_textarea_2();//lv_example_textarea_3();//lv_example_tileview_1();//lv_example_tileview_2 fail//lv_example_win_1();  
}void loop() {lv_task_handler();unsigned long tick_millis = millis() - lvgl_tick_millis;lvgl_tick_millis = millis();lv_tick_inc(tick_millis);yield();delay(5);
}

多选下拉列表效果展示:

【深圳晶彩智能ESP32-2432S028R实时观察LVGL9效果】
https://www.bilibili.com/video/BV1tTa3eSExr?vd_source=7350ed30aaee73c2cb1cac26a00a8b30

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

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

相关文章

基于MATLAB对线阵天线进行泰勒加权

相控阵天线——基于MATLAB对线阵进行泰勒加权 目录 前言 一、泰勒综合 二、单元间距的改变对泰勒阵列方向图的影响 三、单元数的改变对泰勒阵列激励分布的影响 四、副瓣电平SLL对泰勒阵列激励幅度的影响 五、副瓣电平SLL对泰勒阵列方向图的影响 六、泰勒阵列和切比雪夫阵…

ida动态调试-cnblog

ida动态调试 传递启动ida服务 android_server在ida\dbgsrv目录中 adb push android_server /data/local/tmp/chmod 755 /data/local/tmp/android_server /data/local/tmp/android_serveradb forward tcp:23946 tcp:23946ida报错:大多是手机端口被占用 报错提示&#xff1a; …

期末上分站——计组(3)

复习题21-42 21、指令周期是指__C_。 A. CPU从主存取出一条指令的时间 B. CPU执行一条指令的时间 C. CPU从主存取出一条指令的时间加上执行这条指令的时间。 D. 时钟周期时间 22、微型机系统中外设通过适配器与主板的系统总线相连接&#xff0c;其功能是__D_。 A. 数据缓冲和…

数据库可视化管理工具dbeaver试用及问题处理。

本文记录了在内网离线安装数据库可视化管理工具dbeaver的过程和相关问题处理方法。 一、下载dbeaver https://dbeaver.io/download/ 笔者测试时Windows平台最新版本为&#xff1a;dbeaver-ce-24.1.1-x86_64-setup.exe 二、安装方法 一路“下一步”即可 三、问题处理 1、问…

Truffle学习笔记

Truffle学习笔记 安装truffle, 注意: 虽然目前truffle最新版是 5.0.0, 但是经过我实践之后, 返现和v4有很多不同(比如: web3.eth.accounts; 都获取不到账户), 还是那句话: “nodejs模块的版本问题会搞死人的 !” 目前4.1.15之前的版本都不能用了, 只能安装v4.1.15 npm instal…

新手学Cocos报错 [Assets] Failed to open

两个都在偏好设置里面调&#xff08;文件下面的偏好设置&#xff09;&#xff1a; 1.设置中文&#xff1f; 2.报错 [Assets] Failed to open&#xff1f; 这样在点击打开ts文件的时候就不会报错&#xff0c;并且用vscode编辑器打开了&#xff0c; 同样也可以改成你们自己喜欢…

LabVIEW在图像处理中的应用

abVIEW作为一种图形化编程环境&#xff0c;不仅在数据采集和仪器控制领域表现出色&#xff0c;还在图像处理方面具有强大的功能。借助其Vision Development Module&#xff0c;LabVIEW提供了丰富的图像处理工具&#xff0c;广泛应用于工业检测、医学影像、自动化控制等多个领域…

Apache Seata应用侧启动过程剖析——RM TM如何与TC建立连接

本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 Apache Seata应用侧启动过程剖析——RM & TM如何与TC建立连接 前言 看过官网 README 的第…

Android最近任务显示的图片

Android最近任务显示的图片 1、TaskSnapshot截图1.1 snapshotTask1.2 drawAppThemeSnapshot 2、导航栏显示问题3、Recentan按键进入最近任务 1、TaskSnapshot截图 frameworks/base/services/core/java/com/android/server/wm/TaskSnapshotController.java frameworks/base/cor…

解决C++编译时的产生的skipping incompatible xxx 错误

问题 我在编译项目时&#xff0c;产生了一个 /usr/bin/ld: skipping incompatible ../../xxx/ when searching for -lxxx 的编译错误&#xff0c;如下图所示&#xff1a; 解决方法 由图中的错误可知&#xff0c;在编译时&#xff0c;是能够在我们指定目录下的 *.so 动态库的…

python函数和c的区别有哪些

Python有很多内置函数&#xff08;build in function&#xff09;&#xff0c;不需要写头文件&#xff0c;Python还有很多强大的模块&#xff0c;需要时导入便可。C语言在这一点上远不及Python&#xff0c;大多时候都需要自己手动实现。 C语言中的函数&#xff0c;有着严格的顺…

Java基础(六)——继承

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…

【Web】

1、配仓库 [rootlocalhost yum.repos.d]# vi rpm.repo ##本地仓库标准写法 [baseos] namemiaoshubaseos baseurl/mnt/BaseOS gpgcheck0 [appstream] namemiaoshuappstream baseurlfile:///mnt/AppStream gpgcheck0 2、挂载 [rootlocalhost ~]mount /dev/sr0 /mnt mount: /m…

Vulnhub-Os-hackNos-1(包含靶机获取不了IP地址)

https://download.vulnhub.com/hacknos/Os-hackNos-1.ova #靶机下载地址 题目&#xff1a;要找到两个flag user.txt root.txt 文件打开 改为NAT vuln-hub-OS-HACKNOS-1靶机检测不到IP地址 重启靶机 按住shift 按下键盘字母"E"键 将图中ro修改成…

Vue 3集成krpano 全景图展示

Vue 3集成krpano 全景图展示 星光云全景系统源码 VR全景体验地址 星光云全景VR系统 将全景krpano静态资源文件vtour放入vue项目中 导入vue之前需要自己制作一个全景图 需要借助官方工具进行制作 工具下载地址&#xff1a;krpano工具下载地址 注意事项&#xff1a;vuecli…

Hook 实现 Windows 系统热键屏蔽(二)

目录 前言 一、介绍用户账户控制&#xff08;UAC&#xff09; 1.1 什么是 UAC &#xff1f; 2.2 UAC 运行机制的概述 2.3 分析 UAC 提权参数 二、 NdrAsyncServerCall 函数的分析 2.1 函数声明的解析 2.2 对 Winlogon 的逆向 2.3 对 rpcrt4 的静态分析 2.4 对 rpcrt4…

YOLOv8_obb数据集可视化[旋转目标检测实践篇]

先贴代码,周末再补充解析。 这个篇章主要是对标注好的标签进行可视化,虽然比较简单,但是可以从可视化代码中学习到YOLOv8是如何对标签进行解析的。 import cv2 import numpy as np import os import randomdef read_obb_labels(label_file_path):with open(label_file_path,…

清新简约之美,开源个人博客:Jekyll Theme Chirpy

Jekyll Theme Chirpy&#xff1a;简约不简单&#xff0c;Chirpy 让你的博客焕发新意- 精选真开源&#xff0c;释放新价值。 概览 Jekyll Theme Chirpy 是为Jekyll静态网站生成器设计的现代主题&#xff0c;以其清新、简约的设计风格和用户友好的交互体验受到开发者和博客作者的…

为企业知识库选模型?全球AI大模型知识库RAG场景基准测试排名

大语言模型常见基准测试 大家对于AI模型理解和推理能力的的基准测试一定非常熟悉了&#xff0c;比如MMLU&#xff08;大规模多任务语言理解&#xff09;、GPQA&#xff08;研究生级别知识问答&#xff09;、GSMSK&#xff08;研究生数学知识考察&#xff09;、MATH&#xff08…

Zabbix监控软件

目录 一、什么是Zabbix 二、zabbix监控原理 三、zabbix 安装步骤 一、什么是Zabbix ●zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 ●zabbix 能监视各种网络参数&#xff0c;保证服务器系统的安全运营&#xff1b;并提供灵活的…