您现在的位置是:首页 > 正文

【esp32&lvgl】-1.1 # 基于PlatformIO进行ESP32上lvgl_v8开发(Arduino框架)

2024-02-01 03:43:32阅读 2

目录

一、硬件说明

二、新建工程

三、安装及适配TFT_eSPI库

四、安装及适配lvgl库

五、main文件编写


一、硬件说明

开发板:ESP-WROOM-32

屏幕:中景园1.47寸lcd显示屏高清ips172x320 st7789驱动液晶屏

二、新建工程

        PlatformIO的安装这里就不再赘述,网上教程一搜一堆。这里简单说一下工程的设定。

图一-新建工程

如图所示,选择ESP32 Dev Modele的板子,开发框架选择Arduino(主要是因为看的资料用的这个框架,直接复制代码方便测试😁)。

三、安装及适配TFT_eSPI库

​​​​​​图二-安装TFT_eSPI库

 在PlatformIO的libraries部分找到TFT_eSPI库并添加到上一部分建立的工程内。打开User_Setup.h文件,找到下列代码取消注释并修改。分别是:

  • 选择驱动型号
  • 选择屏幕大小
  • 定义GPIO口

根据自己硬件情况修改即可。

#define ST7789_DRIVER   

#define TFT_WIDTH  172 // ST7789 172 x 320
#define TFT_HEIGHT 320 // ST7789 240 x 320

#define TFT_MOSI 13
#define TFT_SCLK 14
#define TFT_CS   15  // Chip select control pin
#define TFT_DC    2  // Data Command control pin
#define TFT_RST   4  // Reset pin (could connect to RST pin)

#define TOUCH_CS 21     // Chip select pin (T_CS) of touch screen

四、安装及适配lvgl库

        

​​​​​​图三-安装lvgl库并选择版本

        和第三节一样,首先在在PlatformIO的libraries内搜索找到lvgl库。PlatformIO内甚至还提供了选择版本的功能,这里选择最新版本添加到工程里即可。之后在lvgl库里把lvgl_conf_template.h复制一份并重命名为lvgl_conf.h,然后再文件里把如图所示0改成1。lvgl库已经可以添加到工程内。

​​​​​​图四-修改lvgl库

五、main文件编写


#include <lvgl.h>
#include <TFT_eSPI.h>

static lv_disp_draw_buf_t draw_buf;    //定义显示器变量
static lv_color_t buf[TFT_WIDTH * 10]; //定义刷新缓存

TFT_eSPI tft = TFT_eSPI();

/* Display flushing */
void my_disp_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p)
{
    uint32_t w = (area->x2 - area->x1 + 1);
    uint32_t h = (area->y2 - area->y1 + 1);

    tft.startWrite();                                        //使能写功能
    tft.setAddrWindow(area->x1, area->y1, w, h);             //设置填充区域
    tft.pushColors((uint16_t *)&color_p->full, w * h, true); //写入颜色缓存和缓存大小
    tft.endWrite();                                          //关闭写功能

    lv_disp_flush_ready(disp); //调用区域填充颜色函数
}

void setup()
{
    tft.init();         //初始化
    tft.setRotation(0); //屏幕旋转方向(横向)
    lv_init();
    lv_disp_draw_buf_init(&draw_buf, buf, NULL, TFT_WIDTH * 10);

    /*Initialize the display*/
    static lv_disp_drv_t disp_drv;
    lv_disp_drv_init(&disp_drv);
    /*Change the following line to your display resolution*/
    disp_drv.hor_res = TFT_WIDTH;
    disp_drv.ver_res = TFT_HEIGHT;
    disp_drv.flush_cb = my_disp_flush;
    disp_drv.draw_buf = &draw_buf;
    lv_disp_drv_register(&disp_drv);

    /*获取LVGL版本信息*/
    String LVGL_Arduino = "Hello LVGL! ";
    LVGL_Arduino += String('V') + lv_version_major() + "." + lv_version_minor() + "." + lv_version_patch(); //版本
    lv_obj_t *label = lv_label_create(lv_scr_act());
    lv_label_set_text(label, LVGL_Arduino.c_str());
    lv_obj_align(label, LV_ALIGN_CENTER, 0, 0); //居中显示
}

void loop()
{
    lv_timer_handler(); /* let the GUI do its work */
    delay(5);
}

        上述章节已经完成开发环境的搭建,这里在main文件里简单写一个程序,代码也是在网上随便找的。然后编译上传到开发板,运行成功。

​​​​​​图五-运行成功

网站文章

  • 计算机网络校园局域网课题,毕业论文基于VLAN技术的校园局域网建设word文档_全文免费在线阅读(推荐阅读)...

    《【毕业论文】基于VLAN技术的校园局域网建设.doc》由会员分享,可免费在线阅读全文,更多与《【毕业论文】基于VLAN技术的校园局域网建设(word文档)_全文免费在线阅读》相关文档资源请在帮帮文库...

    2024-02-01 03:42:57
  • Linux相关-回顾-文件和目录(98.1.1)

    Linux相关-回顾-文件和目录(98.1.1)

    目录 1.linux下的文件系统 2.用户目录 3.Linux 主要目录速查表 @1.linux下的文件系统在 Linux 下,我们是看不到这些驱动器盘符,我们看到的是文件夹(目录):Ubuntu 没有盘符这个概念,只有一个根目录 /,所有文件都在它下面2.用户...

    2024-02-01 03:42:50
  • IOS Monkey测试UI AutoMonkey

    IOS Monkey测试UI AutoMonkey

    转自: http://www.yeetrack.com/?p=861 IOS Monkey测试UI AutoMonkey Posted on 2014 年 1 月 15 日 UI AutoMonkey UI AUtoMonkey是一款非常简单的IOS压力测试工具。通过它,你可以向ios设备发送滑动、拖动、旋转、甚至锁屏和解锁指令。原文github地址:https:/

    2024-02-01 03:42:21
  • NPOI 通过excel模板写入数据并导出

    HSSFWorkbook workbook = null; string FileName = @&quot;D:\XX\CN\&quot; + datetime + &quot;.xls&quot;; using (FileStream fs = File.Open(FileName ,FileMode.Open, FileAccess.Read))

    2024-02-01 03:42:14
  • 【问题解决】报错 Could not connect to SMTP host: smtp.qq.com, port: 465(狂神)

    在狂神教学中,21年8月实测如果加上这段代码会报错Could not connect to SMTP host: smtp.qq.com, port: 465,将下面这段代码注释掉即可 MailSSL...

    2024-02-01 03:42:08
  • 流程图梳理

    流程图梳理

    流程图是产品经理传达需求的常用做法,三大类:业务流程、页面流程、功能流程。分别对应着战略、战术、执行三大层次。 业务流程 体现Boss对整个产品的战略思想。产品经理根据老板的传达以及自身对产品的理解,梳理出整个产品核心业务的走向,生成业务流程图。 页面流程 体现PD对核心业务的高度理解。把核心业务的每一个节点抽象成一张张页面图,用页面跳转体现节点关系,生...

    2024-02-01 03:42:00
  • 游戏反外挂方案解析 最新发布

    游戏反外挂方案解析 最新发布

    因游戏作弊门槛低、游戏安全对抗不对等、黑灰产业链发展完善、法律维权门槛高等因素,游戏安全问题形势愈发严峻,「游戏反外挂」已经成了厂商的必修课。

    2024-02-01 03:41:31
  • FFmpeg 视频处理入门教程(转)

    FFmpeg 视频处理入门教程(阮一峰) FFmpeg 是视频处理最常用的开源软件。 它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式...

    2024-02-01 03:41:24
  • java语言的动态性相关概念;动态绑定、动态连接、与虚方法

    1.动态连接(链接)java代码在进行javac编译的时候不会像c或者c++有“连接”这一步骤,而是虚拟机在加载Class文件的时候进行动态连接。也就是说在class文件中不会保存各个方法,字段最终在...

    2024-02-01 03:41:16
  • 配置一个加密的服务器

    配置一个加密的服务器

    一.添加一个ip地址 二.创建目录 命令:mkdir /tengbaiwan 检查 三.磁盘分区和格式化 1.在虚拟机关机情况下,添加一块新的磁盘 2.磁盘分区 注:磁盘可以分为主分区和扩展分区,而逻...

    2024-02-01 03:40:46