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

目录

一、硬件说明

二、新建工程

三、安装及适配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文件里简单写一个程序,代码也是在网上随便找的。然后编译上传到开发板,运行成功。

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

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值