最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

基于Arduino框架下的ESP32移植LVGL教程

2023-03-24 12:21 作者:yogurt3_  | 我要投稿

??這篇文章將成為一個(gè)教程--關(guān)于如何在Arduino框架下ESP32移植LVGL(Light and Versatile Graphics Library)。學(xué)習(xí)之余,在此寫下我的學(xué)習(xí)筆記。

關(guān)于LVGL

??簡(jiǎn)而言之,LVGL是一個(gè)具有廣泛功能的輕量圖形庫?;旧线m用于所有的顯示器,因?yàn)槠浔旧聿皇荓CD驅(qū)動(dòng)庫---它依賴于其他額外的庫來驅(qū)動(dòng)顯示器。此外,它還是一個(gè)開源庫,在此附上開源鏈接。

硬件軟件

硬件:
· ESP32開發(fā)板
· 帶有SPI接口的LCD
· USB供電線
軟件:
· Platform IO(也可以使用Arduino IDE,本教程中使用前者)
·?TFT_eSPI或其他顯示屏驅(qū)動(dòng)庫(例如Adafruit GFX Library)

開發(fā)環(huán)境

??對(duì)于本教程,我將使用PlatformIO開發(fā)環(huán)境。該IDE相較于Arduino IDE,個(gè)人使用感覺更加便捷容易。
??要開始使用 PlatformIO,首先,你需要下載它。實(shí)際上,它是 Visual Studio Code 的一個(gè)附加組件——可擴(kuò)展的文本編輯器。
安裝后,可以創(chuàng)建你的第一個(gè)項(xiàng)目。使用方法在此就不贅述。?

硬件設(shè)置

本教程中,使用是的1.44寸TFT屏模塊/SPI,驅(qū)動(dòng)IC是ST7735,連接ESP32開發(fā)板如下

移植LVGL前驅(qū)動(dòng)LCD

??首先,你需要一個(gè)在 LVGL 之外工作的顯示器——只有它的驅(qū)動(dòng)程序庫。根據(jù)顯示類型(SPI、I2C、并行),有多種選擇。如果你使用 Adafruit 的(或具有相同驅(qū)動(dòng)器 IC 的類似 LCD)顯示器,則可以使用 Adafruit 庫。你還可以使用基于 Adafruit 庫的Bodmer 的 TFT_eSPI庫。如果你已經(jīng)熟悉 eSPi 庫,則可以使用它。你還可以為顯示器編寫你自己的幾個(gè)驅(qū)動(dòng)程序函數(shù)——這樣你將節(jié)省一些程序內(nèi)存,因?yàn)?LVGL 只需要上述庫中的一些函數(shù)。本教程中使用的是TFT_eSPI。

TFT_eSPI驅(qū)動(dòng)TFT顯示屏

??你可以在PlatformIO中直接下載,或從GithubTFT_eSPI獲取,也可以直接獲取本教程的驅(qū)動(dòng)代碼。
??將庫文件添加至工程后,需要編輯修改?User_Setup.h文件以滿足你的要求。以下代碼為本教程

此外,還需實(shí)例化一個(gè)tft對(duì)象并初始化

至此,LCD屏幕驅(qū)動(dòng)完成。

ESP32移植LVGL

??當(dāng)LCD屏幕啟動(dòng)并運(yùn)行時(shí),下一步就是使LVGL適配你的顯示設(shè)置。首先,下載LVGL至你的PlatformIO工程中,下載方法同上TFT_eSPI。本教程使用的@8.2.0版本。
ps:并非本教程中所有內(nèi)容對(duì)不同版本的lvgl完全適用。

編輯配置文件

??一開始我們需要配置一些 LVGL 庫。轉(zhuǎn)到項(xiàng)目中的 LVGL 文件夾,找到“l(fā)v_conf_template.h”文件。將其重命名為“l(fā)v_conf.h”。然后,打開它進(jìn)行編輯。在里面你會(huì)發(fā)現(xiàn)一行告訴你

“將這個(gè)文件復(fù)制并重命名為?lv_conf.h并放至?lvgl文件夾”。
首先,您應(yīng)該將第一個(gè)定義更改為如下所示:

然后,找到一行:

使用 Arduino 時(shí),您需要將其值更改為 1:

??雖然此文件中有更多設(shè)置,但需要更改這兩行才能在 Arduino 系統(tǒng)上啟動(dòng)一個(gè)簡(jiǎn)單的 LVGL 示例。此外,如果你將 LV_TICK_CUSTOM 的值保留為 0,則屏幕不會(huì)定期更新或在屏幕觸摸后更新。

編輯main.cpp文件

??包含LVGL庫

??注意到上面的 include 中有一條很長(zhǎng)的路徑。通常它應(yīng)該像這樣工作:

??但有時(shí) PlatformIO 決定不查找所需的頭文件,你將不得不從當(dāng)前文件編寫一個(gè)相對(duì)路徑。

??接下來,讓我們創(chuàng)建一些變量:

編寫回調(diào)函數(shù)

??編寫回調(diào)函數(shù),用于將緩沖區(qū)的內(nèi)容復(fù)制到顯示器的特定區(qū)域。

設(shè)置功能

??當(dāng)我們完成以上步驟后,需要將所需代碼添加至?setup()函數(shù)中:

??編譯代碼并燒錄,至此,我們的LVGL移植完畢。

教程源碼鏈接及其他

教程源碼鏈接:https://github.com/Yogurt-994/MyESP32Project/tree/master/NODEMCU-32_LVGL_JSON
LVGL 官方網(wǎng)站:https://lvgl.io/
百問網(wǎng)韋東山LVGL 中文站:http://lvgl.100ask.net/8.2/index.html


基于Arduino框架下的ESP32移植LVGL教程的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
信丰县| 梁河县| 福贡县| 芦山县| 延川县| 普兰县| 屏南县| 靖西县| 额济纳旗| 龙泉市| 十堰市| 江陵县| 海口市| 应城市| 潢川县| 衢州市| 凌海市| 阳曲县| 且末县| 赤峰市| 涿鹿县| 斗六市| 武定县| 沂南县| 鄂尔多斯市| 陇川县| 衡阳市| 军事| 新龙县| 安福县| 微博| 阳江市| 泰来县| 淳化县| 高密市| 志丹县| 连平县| 凤凰县| 泰宁县| 天柱县| 武平县|