深圳晶彩智能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.pswp.cn/web/41135.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41135.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41135.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于MATLAB對線陣天線進行泰勒加權

相控陣天線——基于MATLAB對線陣進行泰勒加權 目錄 前言 一、泰勒綜合 二、單元間距的改變對泰勒陣列方向圖的影響 三、單元數的改變對泰勒陣列激勵分布的影響 四、副瓣電平SLL對泰勒陣列激勵幅度的影響 五、副瓣電平SLL對泰勒陣列方向圖的影響 六、泰勒陣列和切比雪夫陣…

量化交易在不同經濟周期中的表現

量化交易&#xff0c;作為一種基于算法和數學模型的交易方法&#xff0c;其在不同經濟周期中的表現受到了市場參與者的廣泛關注。量化交易策略的設計使其能夠在多種市場環境中尋找投資機會&#xff0c;無論是經濟擴張期還是衰退期&#xff0c;都能夠展現出其獨特的適應性和效率…

7.6數據結構作業

// 練習一 struct K { double a; //8 char b; //1 char c; //1 double d; //8 };//24 // 練習二 struct L { int a; //4 double b; //8 char c; //1 };//24 // 練習三 struct M { char a;//1 int b; //4 char c; //1 double d; //8 };//24 /…

(5) 深入探索Python-Pandas庫的核心數據結構:Series詳解

目錄 前言1. Series 簡介2. Series的特點3. Series的創建3.1 使用列表創建Series3.2 使用字典創建Series3.3 使用列表和自定義索引創建Series3.4 指定數據類型和名稱 4. Series的索引/切片4.1 下標索引&#xff1a;基于整數位置的索引4.2 基于標簽的索引4.3 切片4.4 使用.loc[]…

觸感網絡:WebKit 振動(Vibration API)的交互新維度

觸感網絡&#xff1a;WebKit 振動&#xff08;Vibration API&#xff09;的交互新維度 在數字化時代&#xff0c;用戶體驗的追求已經不僅限于視覺和聽覺&#xff0c;觸覺反饋也逐漸成為網頁交互設計的重要組成部分。WebKit 作為眾多現代瀏覽器的核心技術引擎&#xff0c;對振動…

Linux 文件描述符 fd

當然&#xff0c;以下是一些關于 Linux 文件描述符&#xff08;fd&#xff09;的示例&#xff0c;以清晰、分點表示和歸納的形式給出&#xff1a; 1. 文件描述符的基本概念和用途 定義&#xff1a;文件描述符是一個非負整數&#xff0c;用于指代被進程所打開或使用的文件、套…

Leetcode 59. 螺旋打印矩陣

題目描述 給你一個正整數 n &#xff0c;生成一個包含 1 到 n2 所有元素&#xff0c;且元素按順時針順序螺旋排列的 n x n 正方形矩陣 matrix 。 示例 1&#xff1a; 輸入&#xff1a;n 3 輸出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]] 示例 2&#xff1a; 輸入&#xff1a;n…

c++中new和delete重載的一點介紹

通義千問中作答的&#xff0c;感覺回答的比自己總結的好&#xff1a; 實際上&#xff0c;你可以在C中重載new和delete運算符。重載new和delete允許你自定義內存分配和釋放的行為&#xff0c;這對于實現特殊的內存管理策略非常有用&#xff0c;例如&#xff1a; 內存池&#xf…

系統遷移從CentOS7.9到Rocky8.9

我有兩臺阿里云上的服務器是CentOS7.9&#xff0c;由于CentOS7已經停止支持&#xff0c;后續使用的話會有安全漏洞&#xff0c;所以需要盡快遷移&#xff0c;個人使用的話目前兼容性好的還是RockyLinux8&#xff0c;很多腳本改改就能用了。 一、盤點系統和遷移應用 查看當前系…

AI在軟件開發中的革新與未來挑戰

目錄 前言 AI工具的廣泛應用與優勢 AI與開發者技能需求的互動關系 AI的未來展望與面臨的挑戰 結語 前言 在當今快速發展的技術領域中&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;正以前所未有的方式改變著軟件開發的面貌。從代碼生成到錯誤檢測&#xff0c;再…

linux內核源碼學習所需基礎

1.面向對象的思想&#xff0c;尤其是oopc的實現方式。 2.設計模式。 這兩點需要內核源碼學習者不僅要會c和匯編&#xff0c;還要接觸一門面向對象的語言&#xff0c;比如c&#xff0b;&#xff0b;/java/python等等任意一門都行&#xff0c;起碼要了解面向對象的思想。 另外li…

MyBatis 框架核心及面試知識要點

1、什么是 MyBatis? MyBatis 是一款優秀的支持自定義 SQL 查詢、存儲過程和高級映射的持久層框架&#xff0c;消除了 幾乎所有的 JDBC 代碼和參數的手動設置以及結果集的檢索 。 MyBatis 可以使用 XML,或注解進 行配置和映射&#xff0c;MyBatis 通過將參數映射到配置的 SOL,形…

FastSpeech2中文語音合成就步解析:TTS數據訓練實戰篇

參考github網址&#xff1a; GitHub - roedoejet/FastSpeech2: An implementation of Microsoft’s “FastSpeech 2: Fast and High-Quality End-to-End Text to Speech” 數據訓練所用python 命令&#xff1a; python3 train.py -p config/AISHELL3/preprocess.yaml -m confi…

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; …

java面試-java基礎(下)

文章目錄 一、和equals區別&#xff1f;二、hashcode方法作用&#xff1f;兩個對象的hashCode方法相同&#xff0c;則equals方法也一定為true嗎&#xff1f;三、為什么重寫equals方法就一定要重寫hashCode方法&#xff1f;四、Java中的參數傳遞時傳值呢還是傳引用&#xff1f;五…

期末上分站——計組(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、問…

【深度學習】vscode 命令行下的debug

其實我一直知道vscode可以再命令行下進行debug。 比如 python aaa.py --bb1 --cc2 以前的做法是 去aaa.py 寫死bb和cc 然后直接debug。 直到今天我遇到這個&#xff1a; hydra hydra.main(version_baseNone, config_name/home/justin/Desktop/code/python_project/WASB-SBDT-m…

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; 同樣也可以改成你們自己喜歡…