使用ZYNQ芯片和LVGL框架實現用戶高刷新UI設計系列教程(第五講)

在上一講我們講解了按鍵回調函數的自定義函數的用法,這一講繼續講解回調函數的另一種用法。
首先我們將上一講做好的按鍵名稱以及自定義回調事件中的按鍵名稱修改,改為默認模式為“open”當點擊按鍵時進入回調函數將按鍵名稱改為“close”,具體如下圖所示:
在這里插入圖片描述
然后按照上一講的講解找到自定義函數,將opoen修改為close,具體如下圖所示:在這里插入圖片描述
然后在左側的工具欄中選擇led控件,添加到按鍵的正上方放大,并且修改默認顏色為黑色。在這里插入圖片描述
右鍵按鍵控件選擇事件添加,在事件添加中點擊clicked信號右側的加號添加需要綁定的事件。在這里插入圖片描述
在觸發事件中選擇需要做出回應的對象,這里我們點擊led_1控件,點擊確認。在這里插入圖片描述
點擊clicked信號右上角的if按鍵,在彈出的彈窗中點擊加號,在if右側的條件欄填寫“flag_btnflase”,點擊確認。Flag_btn在上一講代碼中用來判斷按鍵的狀態,false表示當前已經按下,true表示當前按鍵未被按下。在這里插入圖片描述
然后點擊led_1左側的加號,添加觸發的條件限制“flag_btn
false”,在右側加號中選擇改控件要做出的反應,在這里我們選擇色彩修改為黃色,模擬當按鍵按下后燈泡亮起。在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
最后我們根據之前的操作,為else條件添加led_1控件變黑的動作。在這里插入圖片描述
到此為止,模擬按鍵打開燈泡的demo就做好了,以下是回調事件中的代碼:
static void screen_btn_1_event_handler (lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e);
switch (code) {
case LV_EVENT_CLICKED:
{
//控制按鍵字體的變化
btn_clicked();
if (flag_btn==false) {
//改變led_1為黃色
lv_led_set_color(guider_ui.screen_led_1, lv_color_hex(0xeff316));
} else {
//改變led_1為黑色
lv_led_set_color(guider_ui.screen_led_1, lv_color_hex(0x000000));
}
break;
}
default:
break;
}
}
以下是led控件的相關函數:
//基于父控件創建led_1控件
ui->screen_led_1 = lv_led_create(ui->screen);
//控制led_1的亮度,亮度范圍為0~255
lv_led_set_brightness(ui->screen_led_1, 255);
//設置led_1的顏色為黑色
lv_led_set_color(ui->screen_led_1, lv_color_hex(0x000000));
//設置led_1的位置及其大小
lv_obj_set_pos(ui->screen_led_1, 128, 100);
lv_obj_set_size(ui->screen_led_1, 214, 220);
以下是led相關函數,具體使用請查看適合版本的官方手冊。
? lv_led_create: 創建 LED 控件。
? lv_led_set_on: 設置 LED 是否點亮。
? lv_led_set_color: 設置 LED 的顏色。
? lv_led_set_brightness: 設置 LED 的亮度。
? lv_led_get_color: 獲取 LED 的顏色。
? lv_led_get_brightness: 獲取 LED 的亮度。
? lv_led_set_style: 設置 LED 的樣式。

下一期我們將講其他控件的基礎使用。

第五講視頻

本文章由威三學社出品
對課程感興趣可以私信聯系

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/75938.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/75938.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/75938.shtml

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

相關文章

Hyperliquid 遇襲「拔網線」、Polymarket 遭治理攻擊「不作為」,從雙平臺危機看去中心化治理的進化陣痛

作者:Techub 熱點速遞 撰文:Glendon,Techub News 繼 3 月 12 日「Hyperliquid 50 倍杠桿巨鯨」引發的 Hyperliquid 清算事件之后,3 月 26 日 晚間,Hyperliquid 再次遭遇了一場針對其流動性和治理模式的「閃電狙擊」。…

交換機與路由器的區別:深入解析

在構建和維護現代計算機網絡的過程中,交換機和路由器無疑是兩種不可或缺的設備。盡管它們都在數據的傳輸和轉發中扮演著重要角色,但各自的工作原理、應用場景和功能特性卻大相徑庭。本文將從多個角度,結合最新的技術發展和實際應用&#xff0…

自頂向下學習K8S--部署Agones

本文在本人博客,原文地址:http://viogami.tech/index.php/blog/346/ 我是gopher,離不開云原生,自然也逃不了理解docker和K8S這倆。今天抽空想玩下agones,進而對K8S有實踐性的理解。 學一個新事物從底層理論學肯定是最…

藍橋杯省模擬賽 階乘求值

問題描述 給定 n,求 n! 除以 1000000007的余數。 其中 n! 表示 n 的階乘,值為從 1 連乘到 n 的積,即 n!123…n。 輸入格式 輸入一行包含一個整數 n。 輸出格式 輸出一行,包含一個整數,表示答案。 樣例輸入 3樣…

如何在Webpack中配置別名路徑?

如何在Webpack中配置別名路徑? 文章目錄 如何在Webpack中配置別名路徑?1. 引言2. 配置別名路徑的基本原理3. 如何配置別名路徑3.1 基本配置3.2 結合Babel與TypeScript3.2.1 Babel配置3.2.2 TypeScript配置 3.3 適用場景與最佳實踐 4. 調試與常見問題4.1 …

協作機械臂需要加安全墻嗎? 安全墻 光柵 干涉區

安全墻是什么 文章目錄 安全墻是什么簡介1. 物理安全墻1.1 定義:1.2 作用機制:1.3 應用場景: 2. 虛擬安全墻2.2 定義:2.3 作用機制:2.3 應用場景: 3. 安全毛毯3.1 工作原理:3.2 特點3.3 應用場景…

Promise怎么使用,以及它解決了什么問題?

什么是 Promise? Promise 是一種用于處理異步操作的 JavaScript 對象,它代表了一個可能還未完成但將來會完成的操作的結果。Promise 的目的是解決回調函數(callback)帶來的問題,比如回調地獄(callback hel…

光譜范圍與顏色感知的關系

光譜范圍與顏色感知是光學、生理學及技術應用交叉的核心課題,兩者通過波長分布、人眼響應及技術處理共同決定人類對色彩的認知。以下是其關系的系統解析: ?1.基礎原理:光譜范圍與可見光? ?光譜范圍定義?: 電磁波譜中能被特定…

如何讓DeepSeek-R1在內網穩定運行并實現隨時隨地遠程在線調用

前言:最近,國產AI圈里的新星——Deepseek,簡直是火到不行。但是,你是不是已經對那些千篇一律的手機APP和網頁版體驗感到膩味了?別急,今天就帶你解鎖一個超炫的操作:在你的Windows電腦上本地部署…

leetcode33.搜索旋轉排序數組

思路源于 【小白都能聽懂的算法課】【力扣】【Leetcode33】搜索旋轉排序數組 | 二分查找 | 數組 主要是數組旋轉后分為左右兩個升序區間 ,如果mid落在左區間并且目標大小也在left-mid中,那么right右縮 class Solution {public int search(int[] nums, i…

《TypeScript 7天速成系列》第6天:TypeScript裝飾器+混入:高級編程模式揭秘

裝飾器是TypeScript中一項強大的元編程特性,被Angular和Vue3等主流框架廣泛使用。今天我們將深入探討這一高級特性。 裝飾器基礎 裝飾器是一種特殊類型的聲明,可以附加到類聲明、方法、訪問器、屬性或參數上。裝飾器使用expression形式,其中…

YOLO歷代發展 圖像增強方式 架構

YOLO1 YOLOV5 數據增強 mosaic 仿射變換(Affine)、透視變換(Perspective) 網絡搭建

NX二次開發刻字功能——布爾運算

刻字功能在經歷、創建文本、拉伸功能以后就剩下布爾運算了。布爾運算的目的就是實現文本時凸還是凹。這部分內容很簡單。 1、首先識別布爾運算的類型,我這里用到一個枚舉類型的選項,凸就是布爾求和,凹就是布爾求差。 2、其放置位置為創建拉伸…

【MySQL基礎】數據庫及表基本操作

作為運維工程師,掌握MySQL的基礎操作是日常工作的重要技能之一。本文將介紹MySQL中數據庫和表的基本操作,幫助您快速上手或復習這些核心概念。 1 數據庫基本操作 1.1 創建數據庫 create database db_name; -- 指定字符集和排序規則 create database d…

Python貝葉斯分層模型專題|對環境健康、醫學心梗患者、體育賽事數據空間異質性實證分析合集|附數據代碼

全文鏈接:https://tecdat.cn/?p41267 在大數據時代,多水平數據結構廣泛存在于環境健康、醫學研究和體育賽事等領域。本專題合集聚焦貝葉斯分層模型(Hierarchical Bayesian Model)的創新應用,通過氡氣污染數據與 季后…

基于 Qt / HTTP/JSON 的智能天氣預報系統測試報告

目錄 一、項目概述 1.1項目背景 1.2項目目標 二、功能需求 2.1 用戶界面功能 2.2 后臺功能 三、技術選擇 3.1 開發框架與工具 3.2 第三方 API 四、UI設計 4.1界面展示 4.2stylesheet樣式 五、代碼實現 1.構造函數 2.網絡請求響應處理函數 3.處理json數據 4.更新…

GitLab 中文版17.10正式發布,27項重點功能解讀【三】

GitLab 是一個全球知名的一體化 DevOps 平臺,很多人都通過私有化部署 GitLab 來進行源代碼托管。極狐GitLab 是 GitLab 在中國的發行版,專門為中國程序員服務。可以一鍵式部署極狐GitLab。 學習極狐GitLab 的相關資料: 極狐GitLab 官網極狐…

DPO介紹+公式推理

1. 什么是DPO? DPO(Direct Preference Optimization)是一種用于對齊大語言模型(LLMs)的新型方法,旨在高效地將人類偏好融入模型訓練中。它提供了一種替代強化學習(如 RLHF, Reinforcement Learn…

C語言基礎—構造類型

數據類型 1.基本類型/基礎類型 整型 短整型:short[int] --2字節 基本整型:int --4字節 長整型:long[int] --32位4字節/64位8字節 長長整型:long long [int] (C99) 注意:以上類型又都分為sig…

2025年高壓電工考試真題分享

以下是一些高壓電工考試題: 單選題 1、高壓架空線路的檔距一般為( )。 A. 20 - 30m B. 30 - 50m C. 50 - 80m D. 80 - 100m 答案:B。解析:高壓架空線路檔距一般在 30 - 50m,這樣的檔距能較好地保證線…