带你了解LVGL:一个开源的嵌入式图形库-程序员宅基地

技术标签: 学习  个人开发  

前言

嵌入式系统是一种将计算机硬件和软件集成在一个特定的应用中的系统,例如智能手机、智能手表、汽车仪表盘等。嵌入式系统通常需要与用户进行交互,因此需要一个友好和易用的图形用户界面(GUI)。然而,开发一个高质量的GUI并不容易,因为嵌入式系统通常有限的资源,例如处理器速度、记忆体大小、电源消耗等。因此,开发者需要一个适合嵌入式系统的GUI库,可以帮助他们快速和方便地创建美观和功能丰富的GUI。

目的

本文的目的是介绍一个开源的嵌入式图形库 - LVGL(Light and Versatile Graphics Library)。LVGL是一个适用于各种嵌入式平台和显示器的GUI库,它提供了丰富的控件、主题、动画、字体、图像等元素,以及灵活的布局和事件处理机制。本文将介绍LVGL的主要特点、架构、使用方法和应用领域,并且展示一些LVGL的示例和效果。

LVGL介绍

LVGL是由Gábor Kiss-Vámosi于2016年创建的一个开源项目,目前由来自世界各地的志愿者共同维护和开发。LVGL是用C语言编写的,遵循MIT协议,可以自由地使用和修改。LVGL支持多种操作系统,例如Linux、Windows、RTOS等,也可以在开发板上运行。LVGL还支持多种显示器驱动器和触摸屏驱动器,可以与不同大小和分辨率的显示器兼容。LVGL还提供了多种语言的绑定,例如Python、Micropython、JavaScript等,以及多种开发工具,例如模拟器、视觉化设计器、字体转换器等。  

LVGL的主要特点有: 

- 轻量级:LVGL只需要少量的记忆体和运算资源,可以在低端的微控制器上运行。

- 多功能:LVGL提供了超过40种控件,例如按钮、滑块、列表、图表等,以及多种主题、动画、字体、图像等元素,可以创建各种风格和效果的GUI。

- 灵活:LVGL采用了面向对象的设计,可以方便地创建和管理GUI的组件和属性。LVGL还支持自动和手动布局,可以适应不同的显示器和方向。LVGL还支持事件驱动和回调函数,可以实现GUI的交互和逻辑。

- 可移植:LVGL可以在不同的硬件和软件平台上运行,只需要提供一个显示器刷新函数和一个触摸屏读取函数。LVGL还提供了多种预配置的平台,例如STM32、ESP32、Raspberry Pi等,可以快速地开始使用LVGL。

应用领域

LVGL可以用于各种嵌入式系统的GUI开发,例如:

- 智能手机和平板电脑:LVGL可以用于创建类似于Android或iOS的GUI,提供多点触控、手势识别、动画效果等功能。

- 智能手表和穿戴设备:LVGL可以用于创建适合小型显示器的GUI,提供圆形或方形的控件、低功耗模式、健康监测等功能。

- 汽车仪表盘和导航系统:LVGL可以用于创建适合汽车环境的GUI,提供高对比度、高亮度、反射式或透明式的显示器、触摸屏或按键操作、车载信息和娱乐等功能。

- 工业控制和测量仪器:LVGL可以用于创建适合工业场景的GUI,提供坚固耐用、防水防尘、高温高压、抗干扰等特性,以及数据显示和控制等功能。

- 家庭电器和物联网设备:LVGL可以用于创建适合家庭使用的GUI,提供简洁美观、易于操作、节能省电等特点,以及远程控制和智能连接等功能。 

Ubuntu模拟器环境建置

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.开启VScode执行:
a.cd ~/lvgl
b.code lv_sim_vscode_sdl

5.安装扩展套件:

 

图 1

6.按F5执行。

7.执行结果:

 

图 2

结语

LVGL是一个开源的嵌入式图形库,它具有轻量级、多功能、灵活和可移植等特点,可以帮助开发者快速和方便地创建美观和功能丰富的GUI。LVGL适用于各种嵌入式平台和显示器,并且支持多种操作系统和语言。LVGL已经被广泛地应用于智能手机、智能手表、汽车仪表盘、工业控制、家庭电器等领域,并且得到了众多用户的好评。 

Q&A

1.问:lvgl 的作者是谁?

答:lvgl 的作者是来自匈牙利的 Gabor Kiss-Vamosi,也就是 kisvegabor2。

2.问:lvgl 用什么语言编写?

答:lvgl 用 C 语言编写,以实现最大的兼容性(与 C++ 兼容)。

3.问:lvgl 提供了哪些内置的小工具(widgets)?

答:lvgl 提供了 30 多种内置的小工具,例如按钮、标签、滑块、图表、键盘、表格等。

4.问:lvgl 需要多少记忆体和储存空间?

答:lvgl 至少需要 32kB RAM 和 128 kB Flash,以及一个 frame buffer 和至少一个 1/10 萤幕大小的缓冲区用于渲染。

5.问:lvgl 有什么专业的 UI 编辑器工具?

答:lvgl 有一个叫做 SquareLine Studio 的 UI 编辑器工具,可以让你用拖放的方式来设计和创建功能完整的 UI。
 

参考资料:New Bing 

以上内容来源大大通官网,速戳了解更多精彩内容吧~

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wpgddt/article/details/130345427

智能推荐

Lending Club贷款数据集下载(2016-2018)_lendingclub数据集下载-程序员宅基地

文章浏览阅读1.5w次,点赞29次,收藏31次。数据集可用于信用风险、欺诈风险建模使用。网盘地址:https://pan.baidu.com/s/1ONrS1JbgL9ZrmMEvio49PA 密码:let1_lendingclub数据集下载

Vue3通透教程【一】Vue3现状—必然趋势?_vue3要凉凉了-程序员宅基地

文章浏览阅读6.7w次,点赞205次,收藏212次。凉哥作为 Vue 的忠诚粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章,Vue 框架目前的地位大家应该都晓得,所谓三大框架使用人数最多,公司选型最多的框架,凉哥之前在文章中也提到过就是 Vue 框架之所以火起来的原因,和 Vue 框架相比其他框架的巨大优势,有兴趣的伙伴可以看一下Vue框架背后的故事。_vue3要凉凉了

Directly optimization of evaluation measure in information retrieval-程序员宅基地

文章浏览阅读94次。 文章首先针对adarank, svm-map提出它们的共同点:均是优化IR measure的上界, 但是前者的界 是基于IR measure, 后者的界是基于最优排序和非最优排序的对,形式为:仔细观察发现,将PERMU-rank写成类似(9)的形式,和SVMMAP的区别仅仅是把max变成了求和! 这篇文章太扯蛋了... permurank利用了第二种bound的构造形式..._information retrieval paper github

贪心算法(集合覆盖问题)-程序员宅基地

文章浏览阅读5k次,点赞4次,收藏44次。一、贪心算法概述贪心算法的核心思想可以总结为:贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解,如单源最短路经问题,最小生成树问题等。虽然在一些情况下,即使贪心算法不能得到整体最优解,但其最终结果却是最优解的很好近似。二、集合覆盖问题2.1 问题描述假设你办了个广播节目,要让国内的 8 个重要城市的听

安装Oracle11g出现INS-13001环境不满足最低要求_安装11g客户端环境不满足-程序员宅基地

文章浏览阅读1.4w次,点赞8次,收藏10次。第一次安装Oracle11g,就出现这个问题,就找了一些解决方案。现在总结一下。 出现这个问题是因为配置文件中烧了对应的系统,所以添加进去就行了。 首先打开解压后的database文件夹,找到stage文件夹,再找到cvu文件夹,进去后打开cvu_prereq.xml文件,在该文件中的CERTIFIED_SYSTEMS标签中添加如下内容:

一对一直播源码开发,疑难杂症排查— 播放杂音、噪音、回声问题_开发音频 播放 伴随嘶哑声-程序员宅基地

文章浏览阅读203次。今天要跟大家分享的是一对一直播源码开发,疑难杂症排查— 播放杂音、噪音、回声问题,相比于一对一直播源码开发中的视频而言,音频要敏感得多,视频画面有噪点、马赛克都还是可以勉强被接受,而声音一旦有任何瑕疵,人耳都会特别容易感觉到,而且难以忍受。一、问题现象常见的一对一直播源码开发中音频问题现象描述如下:电流音,爆音,滋滋声或者嘟嘟声声音断断续续,听不清楚回声,能听到自己说话的声音二、 问题排查1、参数配置问题在一对一直播源码开发中,音频是一个特别敏感的东西,涉及到许多参数配置,一_开发音频 播放 伴随嘶哑声

随便推点

超硬核Java学习路线图+学习资源+实战项目汇总,看完以后不用再问我怎么学Java了!_java学习路线 知乎-程序员宅基地

文章浏览阅读6.7k次,点赞30次,收藏204次。之前写过很多次关于Java学习指南、Java技术路线图的文章。但是总还是有小伙伴来问我,Java怎么学,项目怎么做,资源怎么找,真是让人头秃。于是这次黄小斜决定来一波狠的,把所有这些内容都整理起来,做成一份非常硬核的Java学习指南+路线图,一篇文章搞定Java学习,360度无死角(可能)如果你们喜欢这类硬核的文章,以后我也会继续这么硬核下去的!不要忘了分享噢。以下就是本文的主要内容,万字长文,你可悠着点看,拒绝到收藏夹吃灰!一、Java学习路线图1 计算机基础2Java编程..._java学习路线 知乎

用原生VideoView进行全屏播放时的问题_videoview mvideoview.setzorderontop(true);其他界面显示不出-程序员宅基地

文章浏览阅读1.1k次。之前参加了一个课程,里面有一节讲到了用视频作为启动界面。讲师用的是自定义VideoView,重写onMeasure方法,因为原生的VideoView在那情况下不能实现全屏播放。当时没有深入研究,现在补回来。用的是36氪之前的视频(608×1080)和Genymotion中的Google Nexus 5(1080×1920)。 一、效果图1、原生VideoView的效果,这里没有让底_videoview mvideoview.setzorderontop(true);其他界面显示不出来

latex编译中遇到的错误-程序员宅基地

文章浏览阅读9k次,点赞6次,收藏5次。问题一、:编译报错Misplaced alignment tab character & 点击跳到.bbl文件里面错误原因:在LaTeX中&符号有特殊含义,不能直接写,需要使用转义字符的形式。即 \&。而LaTeX引文.bib 插入的由google学术或者百度学术复制来的bibtex中有&字符修改:在.bib文件中,将& 改为 \&,删除....

学习网络平台的路线图-程序员宅基地

文章浏览阅读111次。The Web Platform is an amazing ecosystem of APIs, tools, languages, and it is more powerful than ever today. Web平台是由API,工具,语言组成的令人惊叹的生态系统,它比以往任何时候都功能强大。 I wrote a lot of tutorials and articles on t...

OpenCV简单的图像灰度化_opencv 灰度图 mattype-程序员宅基地

文章浏览阅读9.2k次,点赞2次,收藏18次。OpenCV简单的图像灰度化图像灰度化算是数字图像处理中很简单的操作了,这里使用OpenCV简单尝试一下。_opencv 灰度图 mattype

【SpringBoot框架篇】37.使用gRPC实现远程服务调用_springboot使用grpc远程调用-程序员宅基地

文章浏览阅读941次,点赞28次,收藏14次。RPC(Remote Procedure Call)是一种用于实现分布式系统中不同节点之间通信的协议。它允许一个节点(称为客户端)调用另一个节点(称为服务器)上的远程方法,就像调用本地方法一样。RPC的目标是隐藏底层通信细节,使得远程调用过程对开发者透明。在RPC中,客户端通过发送请求消息给服务器来调用远程方法,服务器接收到请求后执行相应的方法,并将结果返回给客户端。RPC可以跨越不同的网络和操作系统,使得分布式系统中的不同节点能够进行高效的通信和协作。_springboot使用grpc远程调用