跳到主要内容

Arduino 开发

本章节包含以下部分,请按需阅读:

Arduino 入门教程

初次接触 Arduino ESP32 开发,想要快速上手?我们为您准备了一套通用的 入门教程

请注意:该教程使用 ESP32-S3-Zero 作为教学示例,所有硬件代码均基于其引脚布局。在动手实践前,建议您对照手中的开发板引脚图,确认引脚配置无误。

配置开发环境

1. 安装和配置 Arduino IDE

请参考 安装和配置 Arduino IDE 教程 下载安装 Arduino IDE 并添加 ESP32 支持。

2. 安装库

  • 在安装 Arduino 库时,通常有两种方式可供选择:在线安装 和 离线安装。若库安装要求离线安装,则必须使用提供的库文件。
  • 对于大多数库,用户可以通过 Arduino 软件的在线库管理器轻松搜索并安装。然而,一些开源库或自定义库未被同步到 Arduino 库管理器中,因此无法通过在线搜索获取。在这种情况下,用户只能通过离线方式手动安装这些库。
  • 可从 该处 下载 ESP32-S3-Touch-LCD-1.47 开发板的示例程序包。包内的 Arduino\libraries 目录已包含本教程所需的全部库文件。
库或文件名称说明版本安装方式
LVGL图形库v8.4.0“在线”安装 (需要复制 demos 文件夹至 src)
GFX_Library_for_ArduinoLCD 驱动库v1.5.9"在线 安装"
esp_lcd_touch_axs5106l触摸驱动库-“离线”安装
版本兼容性说明

LVGL 及其驱动库的版本之间存在较强的依赖关系。例如,为 LVGL v8 编写的驱动可能不兼容 LVGL v9。为确保示例能够稳定复现,推荐使用上表列出的特定版本。混合使用不同版本的库可能导致编译失败或运行时异常。

3. Arduino 工程参数设置

示例程序

Arduino 示例程序位于 示例程序包Arduino/examples 目录中。

示例程序基础例程说明依赖库
01_gfx_helloworld屏幕上显示 HelloWorldGFX_Library_for_Arduino
02_sd_card_test测试 SD 卡-
03_lvgl_arduino_v8lvgl 示例程序lvgl、GFX_Library_for_Arduino、esp_lcd_touch_axs5106l
04_lvgl_battery使用 lvgl 库显示电池电压lvgl、GFX_Library_for_Arduino、esp_lcd_touch_axs5106l
05_lvgl_brightness使用 lvgl 库控制和显示屏幕亮度lvgl、GFX_Library_for_Arduino、esp_lcd_touch_axs5106l
06_lvgl_image使用 lvgl 库显示图片lvgl、GFX_Library_for_Arduino、esp_lcd_touch_axs5106l

01_gfx_helloworld

【程序说明】

  • 本示例演示了 ESP32-S3-Touch-LCD-1.47 使用 GFX_Library_for_Arduino 库驱动屏幕并在屏幕上显示 HelloWorld

【硬件连接】

  • 使用 USB 线把板子接入电脑

【代码分析】

  • 创建 Arduino_ESP32SPI 类的对象 bus,用于配置 SPI 总线的 GPIO,创建 Arduino_ST7789 类的对象 gfx,用于驱动 ST7789 显示屏

    Arduino_DataBus *bus = new Arduino_ESP32SPI(45 /* DC */, 21 /* CS */, 38 /* SCK */, 39 /* MOSI */);

    Arduino_GFX *gfx = new Arduino_ST7789(
    bus, 47 /* RST */, 0 /* rotation */, false /* IPS */,
    172 /* width */, 320 /* height */,
    34 /*col_offset1*/, 0 /*uint8_t row_offset1*/,
    34 /*col_offset2*/, 0 /*row_offset2*/);

【运行效果】

  • 屏幕上显示 helloworld。

02_sd_card_test

【程序说明】

  • 本示例演示了 ESP32-S3-Touch-LCD-1.47 测试 SD 卡的读写功能

【硬件连接】

  • 使用 USB 线把板子接入电脑
  • 将 Micro SD 卡插入卡槽(SD 卡需要格式化为 FAT32)

【代码分析】

  • SD 卡初始化

    if(! SD_MMC.setPins(clk, cmd, d0, d1, d2, d3)){
    Serial.println("Pin change failed!");
    return;
    }
    if (!SD_MMC.begin()) {
    Serial.println("Card Mount Failed");
    return;
    }

【运行效果】

  • 将 SD 卡插入电脑,可以发现多了两个文件 test.txt foo.test。其中 foo.txt 的内容为 Hello World!,test.txt 的内容为空

03_lvgl_arduino_v8

【程序说明】

  • 本示例演示了 ESP32-S3-Touch-LCD-1.47 运行 lvgl 示例程序

【硬件连接】

  • 使用 USB 线把板子接入电脑

【注意事项】

  • 如果 lvgl 库是在线安装,需要复制 demos 文件夹至 src

【代码分析】

  • 选择要运行的 lvgl 示例

    lv_demo_widgets();
    // lv_demo_benchmark();
    // lv_demo_keypad_encoder();
    // lv_demo_music();
    // lv_demo_stress();

【运行效果】

  • 可以进行触摸进行操作

04_lvgl_battery

【程序说明】

  • 本示例演示了 ESP32-S3-Touch-LCD-1.47 使用 lvgl 库在屏幕上显示电池电压以及 ADC 的值

【硬件连接】

  • 使用 USB 线把板子接入电脑

【代码分析】

  • ui 的初始化,并创建一个 1000ms 的定时器,用于获取 adc 的数据并将该数据转换成电压

    lvgl_battery_ui_init(lv_scr_act());

【运行效果】

05_lvgl_brightness

【程序说明】

  • 本示例演示了 ESP32-S3-Touch-LCD-1.47 使用 lvgl 库在屏幕上显示屏幕亮度,通过滑动条可以控制屏幕亮度

【硬件连接】

  • 使用 USB 线把板子接入电脑

【代码分析】

  • ui 的初始化,并创建一个滑动条值更改回调,当滑动条的值发生改变时,修改屏幕亮度

    lvgl_brightness_ui_init(lv_scr_act());

【运行效果】

06_lvgl_image

【程序说明】

  • 本示例演示了 ESP32-S3-Touch-LCD-1.47 运行 lvgl 显示图片。

【硬件连接】

  • 使用 USB 线把板子接入电脑

【准备工作】

  • image_1.c 拷贝到本工程文件夹内
  • 06_lvgl_image.ino 加入以下代码,声明图片
    LV_IMG_DECLARE(image_1);

【代码分析】

  • 设置要显示的图片

    v_img_set_src(img, &image_1);

【运行效果】