前言
嵌入式系統是一種將計算機硬件和軟件集成在一個(gè)特定的應用中的系統,例如智能手機、智能手表、汽車(chē)儀表盤(pán)等。嵌入式系統通常需要與用戶(hù)進(jìn)行交互,因此需要一個(gè)友好和易用的圖形用戶(hù)界面(GUI)。然而,開(kāi)發(fā)一個(gè)高質(zhì)量的GUI并不容易,因為嵌入式系統通常有限的資源,例如處理器速度、記憶體大小、電源消耗等。因此,開(kāi)發(fā)者需要一個(gè)適合嵌入式系統的GUI庫,可以幫助他們快速和方便地創(chuàng )建美觀(guān)和功能豐富的GUI。
目的
本文的目的是介紹一個(gè)開(kāi)源的嵌入式圖形庫 - LVGL(Light and Versatile Graphics Library)。LVGL是一個(gè)適用于各種嵌入式平臺和顯示器的GUI庫,它提供了豐富的控件、主題、動(dòng)畫(huà)、字體、圖像等元素,以及靈活的布局和事件處理機制。本文將介紹LVGL的主要特點(diǎn)、架構、使用方法和應用領(lǐng)域,并且展示一些LVGL的示例和效果。
LVGL介紹
LVGL是由Gábor Kiss-Vámosi于2016年創(chuàng )建的一個(gè)開(kāi)源項目,目前由來(lái)自世界各地的志愿者共同維護和開(kāi)發(fā)。LVGL是用C語(yǔ)言編寫(xiě)的,遵循MIT協(xié)議,可以自由地使用和修改。LVGL支持多種操作系統,例如Linux、Windows、RTOS等,也可以在開(kāi)發(fā)板上運行。LVGL還支持多種顯示器驅動(dòng)器和觸摸屏驅動(dòng)器,可以與不同大小和分辨率的顯示器兼容。LVGL還提供了多種語(yǔ)言的綁定,例如Python、Micropython、JavaScript等,以及多種開(kāi)發(fā)工具,例如模擬器、視覺(jué)化設計器、字體轉換器等。
LVGL的主要特點(diǎn)有:
- 輕量級:LVGL只需要少量的記憶體和運算資源,可以在低端的微控制器上運行。
- 多功能:LVGL提供了超過(guò)40種控件,例如按鈕、滑塊、列表、圖表等,以及多種主題、動(dòng)畫(huà)、字體、圖像等元素,可以創(chuàng )建各種風(fēng)格和效果的GUI。
- 靈活:LVGL采用了面向對象的設計,可以方便地創(chuàng )建和管理GUI的組件和屬性。LVGL還支持自動(dòng)和手動(dòng)布局,可以適應不同的顯示器和方向。LVGL還支持事件驅動(dòng)和回調函數,可以實(shí)現GUI的交互和邏輯。
- 可移植:LVGL可以在不同的硬件和軟件平臺上運行,只需要提供一個(gè)顯示器刷新函數和一個(gè)觸摸屏讀取函數。LVGL還提供了多種預配置的平臺,例如STM32、ESP32、Raspberry Pi等,可以快速地開(kāi)始使用LVGL。
應用領(lǐng)域
LVGL可以用于各種嵌入式系統的GUI開(kāi)發(fā),例如:
- 智能手機和平板電腦:LVGL可以用于創(chuàng )建類(lèi)似于A(yíng)ndroid或iOS的GUI,提供多點(diǎn)觸控、手勢識別、動(dòng)畫(huà)效果等功能。
- 智能手表和穿戴設備:LVGL可以用于創(chuàng )建適合小型顯示器的GUI,提供圓形或方形的控件、低功耗模式、健康監測等功能。
- 汽車(chē)儀表盤(pán)和導航系統:LVGL可以用于創(chuàng )建適合汽車(chē)環(huán)境的GUI,提供高對比度、高亮度、反射式或透明式的顯示器、觸摸屏或按鍵操作、車(chē)載信息和娛樂(lè )等功能。
- 工業(yè)控制和測量?jì)x器:LVGL可以用于創(chuàng )建適合工業(yè)場(chǎng)景的GUI,提供堅固耐用、防水防塵、高溫高壓、抗干擾等特性,以及數據顯示和控制等功能。
- 家庭電器和物聯(lián)網(wǎng)設備:LVGL可以用于創(chuàng )建適合家庭使用的GUI,提供簡(jiǎn)潔美觀(guān)、易于操作、節能省電等特點(diǎn),以及遠程控制和智能連接等功能。
Ubuntu模擬器環(huán)境建置
1.前置準備:
a.安裝Ubuntu20.04虛擬機。
b.Ubuntu安裝vscode。
2.下載LVGL Source code:
a.mkdir -p ~/lvgl
b.cd ~/lvgl
c.git clone --recursive GitHub - lvgl/lv_port_pc_vscode
d.cd ~/lvgl/lv_sim_vscode_sdl
e.git submodule update --init –recursive
3.安裝sdl2:
a.sudo apt-get update && sudo apt-get install -y build-essential libsdl2-dev
4.開(kāi)啟VScode執行:
a.cd ~/lvgl
b.code lv_sim_vscode_sdl
5.安裝擴展套件:
圖 1
6.按F5執行。
7.執行結果:
圖 2
結語(yǔ)
LVGL是一個(gè)開(kāi)源的嵌入式圖形庫,它具有輕量級、多功能、靈活和可移植等特點(diǎn),可以幫助開(kāi)發(fā)者快速和方便地創(chuàng )建美觀(guān)和功能豐富的GUI。LVGL適用于各種嵌入式平臺和顯示器,并且支持多種操作系統和語(yǔ)言。LVGL已經(jīng)被廣泛地應用于智能手機、智能手表、汽車(chē)儀表盤(pán)、工業(yè)控制、家庭電器等領(lǐng)域,并且得到了眾多用戶(hù)的好評。
Q&A
1.問(wèn):lvgl 的作者是誰(shuí)?
答:lvgl 的作者是來(lái)自匈牙利的 Gabor Kiss-Vamosi,也就是 kisvegabor2。
2.問(wèn):lvgl 用什么語(yǔ)言編寫(xiě)?
答:lvgl 用 C 語(yǔ)言編寫(xiě),以實(shí)現最大的兼容性(與 C++ 兼容)。
3.問(wèn):lvgl 提供了哪些內置的小工具(widgets)?
答:lvgl 提供了 30 多種內置的小工具,例如按鈕、標簽、滑塊、圖表、鍵盤(pán)、表格等。
4.問(wèn):lvgl 需要多少記憶體和儲存空間?
答:lvgl 至少需要 32kB RAM 和 128 kB Flash,以及一個(gè) frame buffer 和至少一個(gè) 1/10 螢幕大小的緩沖區用于渲染。
5.問(wèn):lvgl 有什么專(zhuān)業(yè)的 UI 編輯器工具?
答:lvgl 有一個(gè)叫做 SquareLine Studio 的 UI 編輯器工具,可以讓你用拖放的方式來(lái)設計和創(chuàng )建功能完整的 UI。
參考資料:New Bing