Arduino 开发
本章节包含以下部分,请按需阅读:
Arduino 入门教程
初次接触 Arduino ESP32 开发,想要快速上手?我们为您准备了一套通用的 入门教程。
- 第0节 认识 ESP32
- 第1节 安装和配置 Arduino IDE
- 第2节 Arduino 基础知识
- 第3节 数字输出/输入
- 第4节 模拟输入
- 第5节 脉冲宽度调制 (PWM)
- 第6节 串行通信 (UART)
- 第7节 I2C 通信
- 第8节 SPI 通信
- 第9节 Wi-Fi 基础用法
- 第10节 网页服务器
- 第11节 蓝牙 (Bluetooth)
- 第12节 LVGL 图形界面开发
- 第13节 综合项目
请注意:该教程使用 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 目录已包含本教程所需的全部库文件。
| 库或文件名称 | 说明 | 版本 | 安装方式 |
|---|---|---|---|
| lvgl | LVGL 图形化库 | v8.4.0 或 v9.3.0 | 通过库管理器或手动安装 |
| GFX_Library_for_Arduino | GFX 图形化库 | 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。为确保示例能够稳定复现,推荐使用上表列出的特定版本。混合使用不同版本的库可能导致编译失败或运行时异常。
安装步骤:
-
解压已下载的 示例程序。
-
将其
Arduino\libraries目录下的所有文件夹复制到 Arduino 的库文件夹中。信息Arduino 库文件夹的路径通常是:
c:\Users\<用户名>\Documents\Arduino\libraries。也可以在 Arduino IDE 中通过 文件 > 首选项,查看“项目文件夹位置”来定位。库文件夹就是此路径下的
libraries文件夹。
:::
- 其他安装方式请参考:Arduino 库管理教程。
ESP32-C6-Touch-LCD-1.54 所需开发板安装说明
| 板名称 | 板安装要求 | 版本号要求 |
|---|---|---|
| ESP32 by Espressif Systems | “离线”安装 / “在线”安装 | 3.2.0 |
3. 其他提示
ESP32-C6-Touch-LCD-1.54 需要选择及配置开发板。

- ESP32-C6-Touch-LCD-1.54 需要选择 ESP32C6 Dev Module。
- 选择对应的 USB 端口。
- ESP32-C6-Touch-LCD-1.54 使用 ESP32-C6 原生 USB 接口,而非 UART 转 USB。
- 对于串口通信:
printf()函数可直接使用;- 若要使用
Serial.println()函数,建议在 IDE 工具菜单中启用 USB CDC On Boot。
- 选择
16MB Flash。 - 根据示例需求选择合适大小的分区表。运行 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 | 屏幕上显示 HelloWorld | GFX_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_v8 | lvgl v8.4.0 示例程序 | GFX_Library_for_Arduino、lvgl |
| 09_lvgl_example_v9 | lvgl 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 modeif (!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_PINSSPI.begin(sck, miso, mosi, cs);if (!SD.begin(cs)) {#elseif (!SD.begin()) {#endifSerial.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 版本,如已安装其他版本,请重新安装。
运行效果
- 屏幕显示
