arduino-esp32:使用LVGL

概述

上一篇已经完成了对显示触摸屏的驱动,能够正常的显示和触摸了。这篇引入一个嵌入式GUI:LVGL。这也正是我的最终目的。

LVGL

官网的介绍:

LVGL is an open-source graphics library providing everything you need to create embedded GUI with easy-to-use graphical elements, beautiful visual effects and low memory footprint.
LVGL是一个开源图形库,提供创建嵌入式GUI所需的一切,具有易于使用的图形元素、优美的视觉效果和较低的内存占用。

官方demo动图:
在这里插入图片描述
没啥好介绍的,可以去官方文档里看LVGL文档。还提供PDF版本。
在这里插入图片描述

引入LVGL

LVGL库可以直接兼容Arduino。

  1. 在github上直接把LVGL库下载下来。
    在这里插入图片描述
  2. 将解压出来的LVGL库复制进上一篇中说的 sketchbook 目录下的 libraries 文件夹下。
    在这里插入图片描述
  3. 将LVGL目录下的 lv_conf_template.h 文件改名为 lv_conf.h,放在和LVGL库文件夹同层的地方。
    在这里插入图片描述
    在这里插入图片描述
  4. 打开 lv_conf.h ,修改至少这三个地方。第一个,将图中的 0 修改为 1
    在这里插入图片描述
    第二个,根据屏幕的分辨率设置色深。
    在这里插入图片描述
    第三个,将外部定义时钟的宏打开,以使用Arduino的时钟函数接口。
    在这里插入图片描述
    至此底层的移植就已经完成了。还是非常简单友好的。

示例代码

官方提供了一个基于Arduino平台和TFT-eSPI库的示例代码。上面的步骤完成之后,重启Arduino IDE就可以在示例里找到了。
在这里插入图片描述
打开之后,需要修改的地方只有一个。如下图。官方使用的就是TFT-eSPI库来驱动显示屏,所以这里需要使用TFT-eSPI库提供的接口做出一些操作。
原数据
上一篇中,最后烧录进去的是TFT-eSPI库提供的 Touch_calibrate 例程,上图中圈起来要修改的地方也正是基于这个。
打开这个例程。
在这里插入图片描述
烧录进去之后,会出现下面这个画面,这个时候需要触摸箭头指向的四个角。

在四个角都触摸完毕之后,串口会输出一段数据,如下图。这就是需要在LVGL例程中需要修改的五个数据。也就是上图中框起来的五个数据。
在这里插入图片描述
将原例程中的五个数据修改为串口输入的五个数据。
在这里插入图片描述

示例测试

官方提供了示例 lv_demo_weights(),但是需要额外的操作,这里先简单测试一下是否可用。将下图中的#if 0修改为#if 1,即在屏幕中央绘制一个 label 组件,内容是LVGL版本信息。
在这里插入图片描述
在头文件处,将 lv_demo.h 注释掉。
在这里插入图片描述
然后点击上传即可。上传完成后就可以在屏幕上看到通过LVGL绘制出来的 label 组件了。

添加测试代码

将下图中函数代码复制进工程中,放在 setup() 函数上面就行,随便哪。

void lv_example_btn(void)
{
   
    /*Properties to transition*/
    static lv_style_prop_t props[] = {
   
            LV_STYLE_TRANSFORM_WIDTH, LV_STYLE_TRANSFORM_HEIGHT, LV_STYLE_TEXT_LETTER_SPACE}
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值