跳到主要内容

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 版本,如已安装其他版本,请重新安装。

运行效果​

  • 屏幕显示