跳到主要内容

Arduino 开发

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

Arduino 入门教程

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

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

配置开发环境

1. 安装和配置 Arduino IDE

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

2. 安装库

要运行示例,需要安装对应的库。示例代码使用 GFX Library for Arduino 库驱动 ST7789 显示屏 ,并使用 SensorLib 库驱动 CST816 触摸芯片。

可从 此链接 下载 ESP32-C6-Touch-LCD-1.54 开发板的示例程序包。包内的 Arduino\libraries 目录已包含本教程所需的全部库文件。

库或文件名称说明版本安装方式
lvglLVGL 图形化库v8.4.0 或 v9.3.0通过库管理器或手动安装
GFX_Library_for_ArduinoGFX 图形化库v1.6.0通过库管理器或手动安装
U8g2图形显示库v2.35.30通过库管理器或手动安装
SensorLib传感器驱动库v0.3.1通过库管理器或手动安装
ESP32-audioI2S-master音频处理库v3.4.0通过库管理器或手动安装
OneButton按键库v2.6.1通过库管理器或手动安装
版本兼容性说明

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

安装步骤:

  1. 解压已下载的 示例程序

  2. 将其 Arduino\libraries 目录下的所有文件夹复制到 Arduino 的库文件夹中。

    信息

    Arduino 库文件夹的路径通常是:c:\Users\<用户名>\Documents\Arduino\libraries

    也可以在 Arduino IDE 中通过 文件 > 首选项,查看“项目文件夹位置”来定位。库文件夹就是此路径下的 libraries 文件夹。

:::

  1. 其他安装方式请参考:Arduino 库管理教程

ESP32-C6-Touch-LCD-1.54 所需开发板安装说明

板名称板安装要求版本号要求
ESP32 by Espressif Systems“离线”安装 / “在线”安装3.2.0

3. 其他提示

ESP32-C6-Touch-LCD-1.54 需要选择及配置开发板。

  1. ESP32-C6-Touch-LCD-1.54 需要选择 ESP32C6 Dev Module
  2. 选择对应的 USB 端口。
  3. ESP32-C6-Touch-LCD-1.54 使用 ESP32-C6 原生 USB 接口,而非 UART 转 USB。
  4. 对于串口通信:
    • printf() 函数可直接使用;
    • 若要使用 Serial.println() 函数,建议在 IDE 工具菜单中启用 USB CDC On Boot
  5. 选择 16MB Flash
  6. 根据示例需求选择合适大小的分区表。运行 ESP-SR 示例时,需要选择支持语音模型的大分区表。

示例程序

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

示例程序基础例程说明依赖库
01_audio_out读取 SD 卡的音频文件,并播放ESP32-audioI2S-master
02_button_example按键测试OneButton
03_qmi8658_example打印 IMU 获取的数据SensorLib FastLED
04_gfx_helloworld屏幕上显示 HelloWorldGFX_Library_for_Arduino
05_esp_wifi_analyzer屏幕上显示 WiFi 信号强度GFX_Library_for_Arduino
06_gfx_u8g2_font通过加载字库,实现各国文字显示GFX_Library_for_Arduino、U8g2
07_sd_card_test测试 SD 卡的读写---
08_lvgl_example_v8lvgl v8.4.0 示例程序GFX_Library_for_Arduino、lvgl
09_lvgl_example_v9lvgl v9.3.0 示例程序GFX_Library_for_Arduino、lvgl

01_audio_out

本示例演示 ESP32-C6-Touch-LCD-1.54 读取音频数据并播放,屏幕无现象。

代码解释

  • 设置 I2S 引脚:
    void setupI2S() {
    i2s.setPins(I2S_BCK_PIN, I2S_LRCK_PIN, I2S_DOUT_PIN, I2S_DIN_PIN, I2S_MCK_PIN);
    // Initialize the I2S bus in standard mode
    if (!i2s.begin(I2S_MODE_STD, EXAMPLE_SAMPLE_RATE, I2S_DATA_BIT_WIDTH_16BIT, I2S_SLOT_MODE_MONO, I2S_STD_SLOT_LEFT)) {
    Serial.println("Failed to initialize I2S bus!");
    return;
    }
    }
  • 设置播放的音频数据:
    i2s.write((uint8_t *)audio_data, AUDIO_SAMPLES * 2);

运行效果

  • 播放音频文件,屏幕无现象

02_button_example

  • 本示例演示如何使用 OneButton 库读取按键的单击、双击和长按等状态,并通过串口打印。

代码解释

  • 绑定回调函数:

    button1.attachClick(click1);
    button1.attachDoubleClick(doubleclick1);
    button1.attachLongPressStart(longPressStart1);
    button1.attachLongPressStop(longPressStop1);
    button1.attachDuringLongPress(longPress1);

运行效果

  • 屏幕无现象
  • 串口打印按钮信息

03_qmi8658_example

  • 本示例使用 ESP32-C6-LCD-1.54 获取板载 QMI8658 的数据并使用串口打印

代码解释

  • 初始化 QMI8658:

    if (!qmi.begin(Wire, QMI8658_L_SLAVE_ADDRESS, SENSOR_SDA, SENSOR_SCL)) {
    Serial.println("Failed to find QMI8658 - check your wiring!");
    while (1) {
    delay(1000);
    }
    }

运行效果

  • 屏幕无现象
  • 打开串口监视器,可以看到打印的 x、y、z 轴的 accel 和 gyro 数据

04_gfx_helloworld

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

代码解释

  • 配置屏幕接口、分辨率等
    Arduino_DataBus* bus = new Arduino_HWSPI(3 /* DC */, 5 /* CS */, 1 /* SCK */, 2 /* MOSI */, -1 /* MISO */);
    Arduino_GFX* gfx = new Arduino_ST7789(
    bus, 4 /* RST */, 0 /* rotation */, true, 240, 240);

运行效果

  • 屏幕显示

05_esp_wifi_analyzer

  • 本示例演示 ESP32-C6-Touch-LCD-1.54 使用 GFX_Library_for_Arduino 库显示 WiFi 频段信号强度

运行效果

  • 屏幕显示

06_gfx_u8g2_font

  • 本示例演示 ESP32-C6-Touch-LCD-1.54 使用 GFX_Library_for_Arduino 库通过加载字库,实现各国文字显示

运行效果

  • 屏幕显示

07_sd_card_test

  • 本示例使用 ESP32-C6-Touch-LCD-1.54 测试 SD 卡的读写功能

代码解释

  • SD 卡初始化 :

    #ifdef REASSIGN_PINS
    SPI.begin(sck, miso, mosi, cs);
    if (!SD.begin(cs)) {
    #else
    if (!SD.begin()) {
    #endif
    Serial.println("Card Mount Failed");
    return;
    }

运行效果

  • 屏幕无现象
  • 打开串口监视器

08_lvgl_example_v8

本示例演示了使用 ESP32-C6-Touch-LCD-1.54 运行 lvgl(v8.4.0)示例程序。

需要安装 lvgl v8.4.0 版本,如已安装其他版本,请重新安装。

运行效果

  • 屏幕显示

09_lvgl_example_v9

本示例演示了使用 ESP32-C6-Touch-LCD-1.54 运行 lvgl(v9.3.0)示例程序。

需要安装 lvgl v9.3.0 版本,如已安装其他版本,请重新安装。

运行效果

  • 屏幕显示