五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ó)家法律
陇西县| 涟水县| 新丰县| 辉县市| 桑日县| 龙州县| 双牌县| 沙坪坝区| 定陶县| 连南| 建湖县| 罗田县| 达日县| 灵丘县| 宣恩县| 汝城县| 渝中区| 永寿县| 莎车县| 双鸭山市| 营山县| 潍坊市| 温宿县| 六枝特区| 贺兰县| 商都县| 宜兴市| 南康市| 广灵县| 绥阳县| 乐业县| 阿瓦提县| 隆昌县| 玛沁县| 泾阳县| 陈巴尔虎旗| 正蓝旗| 阳城县| 阳信县| 柳林县| 建德市|