ESP32-DEVKIT-V1上手
侧边栏壁纸
  • 累计撰写 18 篇文章
  • 累计收到 0 条评论

ESP32-DEVKIT-V1上手

lycraft
2022-05-18 / 0 评论 / 57 阅读 / 正在检测是否收录...

ESP32-DEVKIT-V1上手

1.创建platform工程

New Project -> Borad选DOIT esp32devkitv1 -> arduino framework

在platformio.ini中加入monitor_speed = 115200

2.添加库

Libraries -> TFT_eSPI

进入User_Setup.h

Section 1. Call up the right driver file and any options for it

Libraries -> lvgl

3.测试程序

屏幕驱动

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

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

TFT_eSPI tft = TFT_eSPI();
const char *ssid = "HUAWEI-7A0A1D";
const char *pwd  = "l12345678";

/* 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()
{
    pinMode(2,OUTPUT);
    Serial.begin(115200);

    //connect to WiFi
    Serial.printf("Connecting to %s ", ssid);
    WiFi.begin(ssid, pwd);
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print(".");
        delay(500);
    }
    Serial.println("Connected!");

    // local ip
    Serial.println(WiFi.localIP().toString());

    // WiFi disconnect
    WiFi.disconnect();
    Serial.println("WiFi Disconnected!");

    // WiFi Close
    WiFi.mode(WIFI_OFF);
    Serial.println("WiFi is off!");

    //tft初始化
    tft.init(); //初始化
    tft.setRotation(3);
    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);

    lv_obj_t *label = lv_label_create(lv_scr_act());
    lv_label_set_text(label, "Hello world!");
    lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
}

void loop()
{

    lv_timer_handler(); /* let the GUI do its work */
    delay(5);
    digitalWrite(2,HIGH);
    delay(500);
    digitalWrite(2,LOW);
    delay(500);
}

参考

0

评论

博主关闭了所有页面的评论