当前位置: 首页 > news >正文

LVGL(lv_label实战)

文章目录

    • ✅ 案例一:实时温度/电压显示
      • 🔧 功能说明:
      • ✅ 代码示例:
    • ✅ 案例二:带图标 + 居中滚动文本的英文通知栏
      • 🔧 功能说明:
      • ✅ 代码示例:
      • 📝 提示:


好的!下面是你要的两个 LVGL 示例控件案例:


✅ 案例一:实时温度/电压显示

🔧 功能说明:

  • 使用 snprintf 手动格式化浮点数,避免嵌入式环境中 printf("%f") 不支持的问题。
  • 每 1 秒更新一次温度和电压数据。

✅ 代码示例:

#include "lvgl.h"
#include <stdlib.h>
#include <stdio.h>static lv_obj_t *label_status;static void update_sensor_data_cb(lv_timer_t *timer) {char buf[64];float temp = 36.5f + (rand() % 10) / 10.0f;    // 模拟温度:36.5 ~ 37.4°Cfloat volt = 3.70f + (rand() % 10) / 100.0f;   // 模拟电压:3.70 ~ 3.79Vint temp_int = (int)temp;int temp_frac = (int)((temp - temp_int) * 10);int volt_int = (int)volt;int volt_frac = (int)((volt - volt_int) * 100);snprintf(buf, sizeof(buf), "temp: %d.%d°C\nvolt: %d.%02dV",temp_int, temp_frac, volt_int, volt_frac);lv_label_set_text(label_status, buf);
}void create_sensor_status_ui(void) {label_status = lv_label_create(lv_scr_act());lv_obj_align(label_status, LV_ALIGN_CENTER, 0, 0);lv_label_set_text(label_status, "Initializing...");lv_timer_create(update_sensor_data_cb, 1000, NULL); // 每 1 秒更新一次
}

✅ 案例二:带图标 + 居中滚动文本的英文通知栏

🔧 功能说明:

  • 显示图标(emoji 或图标字体)
  • 滚动英文通知文字,文本在 label 中横向滚动(LV_LABEL_LONG_SCROLL_CIRCULAR
  • 支持自定义通知栏背景色、高度、位置等

✅ 代码示例:

#include "lvgl.h"void create_notification_bar(void) {// 创建背景容器lv_obj_t *bar = lv_obj_create(lv_scr_act());lv_obj_set_size(bar, lv_pct(100), 40);lv_obj_align(bar, LV_ALIGN_TOP_MID, 0, 0);lv_obj_set_style_bg_color(bar, lv_color_hex(0x333333), 0);lv_obj_set_style_radius(bar, 0, 0);lv_obj_clear_flag(bar, LV_OBJ_FLAG_SCROLLABLE);// 创建图标lv_obj_t *icon = lv_label_create(bar);lv_label_set_text(icon, LV_SYMBOL_INFO); // 或者直接用 emoji: "🔔"lv_obj_align(icon, LV_ALIGN_LEFT_MID, 8, 0);lv_obj_set_style_text_color(icon, lv_color_white(), 0);// 创建滚动文本lv_obj_t *notice = lv_label_create(bar);lv_label_set_long_mode(notice, LV_LABEL_LONG_SCROLL_CIRCULAR);lv_label_set_text(notice, "System update available. Click here to restart and apply changes.");lv_obj_set_width(notice, lv_pct(80));lv_obj_align_to(notice, icon, LV_ALIGN_OUT_RIGHT_MID, 10, 0);lv_obj_set_style_text_color(notice, lv_color_white(), 0);
}

📝 提示:

  • 第二个案例可以配合 lv_anim 实现更复杂的动画提示。
  • 如果你使用的是字体图标(如 FontAwesome),需要提前加载相应字体并设置给 label

相关文章:

  • 2025御网杯wp(web,misc,crypto)
  • Python异常处理全解析:从基础到高级应用实战
  • 天授强化学习库了解
  • openai接口参数max_tokens改名max-completion-tokens?
  • Google LLM prompt engineering(谷歌提示词工程指南)
  • 第一章 例行性工作(任务计划)
  • 线性动态规划3
  • 软考 系统架构设计师系列知识点之杂项集萃(56)
  • Unity中AssetBundle使用整理(一)
  • Java NIO 文件处理接口
  • GO语言-导入自定义包
  • Linux基础io知识
  • [超详细,推荐!!!]前端性能优化策略详解
  • 如何实现并运用责任链模式
  • 当虚拟照进现实——《GTA6》如何重新定义开放世界的可能性‌
  • Python3安装HTMLTestRunner
  • 【Tools】Visual Studio使用经验介绍(包括基本功能、远程调试、引入第三方库等等)
  • 使用lldb看看Rust的HashMap
  • 信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(十七)
  • 害怕和别人发生冲突怎么办? --deepseek
  • 第十二届警博会在京开幕:12个国家和地区835家企业参展
  • 英国首相斯塔默住所起火,警方紧急调查情况
  • 济南市委副秘书长吕英伟已任历下区领导
  • “无锡景・江南韵”:中国评弹艺术在尼日利亚收获众多粉丝
  • 金科股份重整方案通过,正式进入重整计划执行环节
  • 俄乌释放停火和谈信号,克宫:将组建“相应级别”谈判代表团