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

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

單片機(jī)低代碼交互UI制作 - LVGL+Squareline+Arduino平臺(tái) 學(xué)習(xí)記錄(8)

2023-07-10 01:57 作者:-CVZZ-  | 我要投稿

實(shí)際應(yīng)用

所有的前期準(zhǔn)備工作都完成了,LVGL各部件間內(nèi)部的聯(lián)動(dòng)根據(jù)之前的翻譯多操作操作應(yīng)該就差不多會(huì)了,這里主要來(lái)說(shuō)代碼部分,部件觸發(fā)函數(shù)事件及部件各參數(shù)在代碼中的調(diào)用與更改。

由于使用Squareline,不必再去關(guān)注UI部分的搭建和其內(nèi)部的邏輯,只需要考慮自己的代碼與LVGL的部分,基本分為兩類(lèi),1、代碼控制LVGL上的部件;2、LVGL事件觸發(fā)代碼。

各部件的使用方法是類(lèi)似的,這里只用一個(gè)小例子進(jìn)行說(shuō)明,后面會(huì)列出各部件的對(duì)應(yīng)函數(shù)。

1、新建一個(gè)橫屏、320*240 分辨率、16位色、暗主題的項(xiàng)目

2、添加一個(gè)弧形滑塊,起始值10,結(jié)束值100,初始化值100。(要用這個(gè)滑塊控制屏幕背光亮度,太暗的話容易看不到位置。)

3、創(chuàng)建兩個(gè)標(biāo)簽顯示數(shù)據(jù),中文字體要自己做

4、給弧形滑塊創(chuàng)建事件,事件條件為當(dāng)值改變時(shí)觸發(fā),包含兩個(gè)動(dòng)作:1、改變標(biāo)簽Label2的文本;2、執(zhí)行名為bled_brightness_set的函數(shù)

(注意此處勾選了不輸出函數(shù),不輸出的效果就是沒(méi)有event.c文件,官方把所有的自定義函數(shù)都放在了這個(gè).c文件里,不是很好用,所以直接不輸出,到程序里自己加)

5、創(chuàng)建模板項(xiàng)目(注意:先測(cè)試過(guò)后再導(dǎo)出)

6、生成的文件夾內(nèi)1.3.0版本的是這樣,比之前改動(dòng)了,這個(gè)軟件更新比較頻繁,以后要是又改了再說(shuō)吧。

ui文件夾:放的是Arduino的ino文件

Libraries文件夾:官方的想法是好的,直接改動(dòng)Arduino IDE庫(kù)的路徑指向這個(gè)文件夾,就可以編譯。

但有點(diǎn)想當(dāng)然了,雖然Squareline輸出了lv_conf.h文件,但TFT_eSPI庫(kù)的配置文件它可沒(méi)有在軟件里配置的地方,這么搞感覺(jué)反而更麻煩了。如果你的代碼還需要調(diào)用別的庫(kù)的話,真的。。呵呵。。。

7、Libraries文件夾里是這個(gè)樣子,我們要移動(dòng)的是下圖所示的ui文件夾和lv_conf.h。

(注意:這個(gè)ui文件夾是Libraries中的,不是上面和Libraries同級(jí)的那個(gè))

8、拷貝這兩個(gè)文件到Arduino IDE的庫(kù)目錄,藍(lán)色箭頭標(biāo)識(shí)的lvgl和TFT_eSPI兩個(gè)庫(kù)是我們之前設(shè)置好的,別用Squareline輸出的那兩個(gè)庫(kù)替代!

9、打開(kāi)輸出的Arduino代碼文件

10、添加EEPROM.h頭(這是給我上一章背光控制和觸摸校準(zhǔn)代碼用的)

11、拷貝結(jié)構(gòu)體過(guò)來(lái)

12、注意下面兩張圖的區(qū)別,由于我用的是橫屏,Squareline輸出的屏幕寬是320、高是240,而實(shí)際屏幕寬是240、高是320,所以在TFT_eSPI這調(diào)換了下位置,TFT_eSPI需要對(duì)應(yīng)屏幕的實(shí)際寬高。

13、如果使用了觸摸,需要如下圖所示,把注釋的內(nèi)容放出來(lái)。

14、紅色箭頭指的是屏幕方向,默認(rèn)好像都是3,對(duì)應(yīng)到我的屏幕0&2是豎屏,1&3是橫屏,方向?qū)Τ绦驔](méi)有影響,只是看你設(shè)計(jì)的屏幕和想要顯示的方向。

黃色箭頭指的是上一篇通用代碼的初始化。

(注意,由于初始化進(jìn)行了觸摸校準(zhǔn) / 校準(zhǔn)數(shù)據(jù)讀取,所以黃色箭頭的函數(shù)必須在藍(lán)色上面,且由于需要先確定方向,黃色必須在紅色下面)

藍(lán)色箭頭指的則是給TFT_eSPI傳入觸摸校準(zhǔn)的數(shù)據(jù)。

15、新建一個(gè)標(biāo)簽,把上一篇的代碼粘貼過(guò)來(lái)。

16、再新建一個(gè)標(biāo)簽,寫(xiě)事件觸發(fā)的函數(shù)。

這個(gè)函數(shù)為什么這么寫(xiě)

至于這個(gè)lv_event_t是什么結(jié)構(gòu),想研究的直接右鍵轉(zhuǎn)到定義,這里我們只講怎么用,其它的不重要。

17、事件內(nèi)部調(diào)光功能函數(shù)

CVZZ_Screen_Bled_Set:是之前寫(xiě)的用來(lái)控制背光亮度的函數(shù)。

lv_arc_get_value:獲取弧形滑塊當(dāng)前值的函數(shù)。

lv_event_get_target:取事件來(lái)源部件的函數(shù)。

通過(guò)這行,先從事件傳遞的參數(shù)e中取出了來(lái)源部件Arc1,然后獲取它的值,最后改變背光亮度。

(注意:在Squareline中設(shè)置的部件名并不能直接用,lv_event_get_target取出來(lái)的是下圖這玩意,前面加了ui_,注意這個(gè)地方,有事件傳參可以像上面這么直接取出來(lái),但若是直接調(diào)函數(shù)改動(dòng)的話就需要這個(gè)名了。)

18、每個(gè)部件的GET和SET放后面說(shuō),下一步,校驗(yàn)燒錄。(如果已經(jīng)校準(zhǔn)過(guò)觸摸,但需要改變方向重新校準(zhǔn),像下圖打開(kāi)擦除所有Flash,或者調(diào)用之前寫(xiě)觸摸校準(zhǔn)重置函數(shù)。)

目前版本,Arduino IDE會(huì)輸出很多警告,主要是DMA還有字符串相關(guān)的,只要不是報(bào)錯(cuò)就不用管。

19、完成,在屏幕觸摸校準(zhǔn)之后就可以用了,重新上電重啟也不會(huì)再進(jìn)行觸摸校準(zhǔn)。(屏幕漏光,敬請(qǐng)忽略,圖糊的一批,手機(jī)的自動(dòng)補(bǔ)償讓兩個(gè)看起來(lái)差不多了。。。實(shí)際上差別挺大的)

靜止?fàn)顟B(tài)CPU 47%,觸摸按下90%,但不掉幀,RAM占用6.1K,說(shuō)實(shí)話不知道怎么算出來(lái)的,這塊顯示的內(nèi)存好像只是LVGL申請(qǐng)的那一部分,Arduino IDE的報(bào)告,總共使用了80多K的RAM。ROM用的是默認(rèn)的1.2M APP的分區(qū)表,所以顯示的小了。

OK,從工程導(dǎo)出到實(shí)際下載到屏幕就是這樣了,當(dāng)然也有其它的方式去實(shí)現(xiàn),但我比較習(xí)慣這么用。

部件觸發(fā)自己的程序已經(jīng)實(shí)現(xiàn)了,還差程序控制部件的部分了,后面會(huì)按部件把LVGL官方手冊(cè)的函數(shù)扒一部分下來(lái)。

?

嗯。。還差個(gè)ESP的分區(qū)表。。。

?

額。。還有無(wú)觸摸屏?xí)r使用旋轉(zhuǎn)電位器和按鍵的交互,這個(gè)等有時(shí)間搞個(gè)擴(kuò)展板再說(shuō)吧,飛線太亂了。

?

其它的問(wèn)題就隨機(jī)寫(xiě)了,也許是隨版本更新的內(nèi)容,也許是手動(dòng)增加Squareline目前還沒(méi)有的部件,不過(guò)那就成了純LVGL編程了,不是特別喜歡,還不如直接勒框框省事,湊合湊合又不是不能用。。。


單片機(jī)低代碼交互UI制作 - LVGL+Squareline+Arduino平臺(tái) 學(xué)習(xí)記錄(8)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
方山县| 依安县| 寿阳县| 霍城县| 余干县| 延庆县| 东兰县| 太湖县| 尖扎县| 安庆市| 沙湾县| 中牟县| 三台县| 姚安县| 墨玉县| 靖江市| 武城县| 申扎县| 普安县| 大英县| 桃江县| 页游| 抚顺市| 随州市| 丰原市| 丰县| 鄂州市| 新巴尔虎右旗| 同德县| 区。| 西吉县| 太康县| 上杭县| 永新县| 含山县| 玉林市| 嵩明县| 马龙县| 奉贤区| 班戈县| 五指山市|