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. 安装库
要运行示例,需要安装对应的库。
可从 该处 下载 ESP32-C6-Touch-LCD-1.69 开发板的示例程序包。包内的 arduino\libraries 目录已包含本教程所需的全部库文件。
| 库或文件名称 | 说明 | 版本 | 安装方式 |
|---|---|---|---|
| lvgl | LVGL 图形库 | v8.4.0 | 在线或手动安装 |
| GFX_Library_for_Arduino | GFX 图形化库 | v1.6.0 | 在线或手动安装 |
| U8g2 | 图形显示库 | v2.35.30 | 在线或手动安装 |
| SensorLib | 传感器库 | v0.3.1 | 在线或手动安装 |
| OneButton | 按键库 | v2.6.1 | 在线或手动安装 |
LVGL 及其驱动库的版本之间存在较强的依赖关系。例如,为 LVGL v8 编写的驱动可能不兼容 LVGL v9。为确保示例能够稳定复现,推荐使用上表列出的特定版本。混合使用不同版本的库可能导致编译失败或运行时异常。
安装步骤:
-
进入已下载的 示例程序包
-
将其
arduino\libraries目录下的所有文件夹(lvgl 和 lv_conf.h 等)复制到 Arduino 的库文件夹中。信息Arduino 库文件夹的路径通常是:
c:\Users\<用户名>\Documents\Arduino\libraries。也可以在 Arduino IDE 中通过 文件 > 首选项,查看“项目文件夹位置”来定位。库文件夹就是此路径下的
libraries文件夹。 -
其他安装方式请参考:Arduino 库管理教程。
3. Arduino 工程参数设置
[
]
示例程序
| 示例程序 | 基础例程说明 | 依赖库 |
|---|---|---|
| 01_audio_out | 通过 I2S 接口播放 PCM 数据音频 | - |
| 02_button_example | 屏幕上显示电池电压 | OneButton |
| 03_battery_example | BOOT 按键单击、双击、长按等 | OneButton |
| 04_es8311_example | 扬声器实时播放麦克风采集的声音 | - |
| 05_gfx_helloworld | 屏幕上显示 HelloWorld | GFX_Library_for_Arduino |
| 06_gfx_pdq_graphicstest | 进行图形测试,并显示分数 | GFX_Library_for_Arduino |
| 07_gfx_clock | 屏幕上显示一个模拟时钟表盘 | GFX_Library_for_Arduino |
| 08_gfx_u8g2_font | 通过加载字库,实现各国文字显示 | GFX_Library_for_Arduino 、U8g2 |
| 09_gfx_image | 屏幕显示图片 | GFX_Library_for_Arduino |
| 10_esp_wifi_analyzer | 屏幕显示 WiFi 频段信号强度 | GFX_Library_for_Arduino |
| 11_pcf85063_example | 屏幕显示 RTC 时间 | GFX_Library_for_Arduino、SensorLib |
| 12_qmi8658_example | 屏幕显示 IMU 数据 | GFX_Library_for_Arduino、SensorLib |
| 13_lvgl_arduino_v8 | lvgl v8 版本示例程序 | lvgl(v8.4.0)、GFX_Library_for_Arduino、SensorLib |
| 14_lvgl_arduino_v9 | lvgl v9 版本示例程序 | lvgl(v9.3.0)、GFX_Library_for_Arduino、SensorLib |
| 15_touch_example | 在屏幕上实时显示触摸坐标和滑动路径 | GFX_Library_for_Arduino、SensorLib |
01_audio_out
【程序说明】
- 本示例演示 ESP32-C6-LCD-1.69 播放 PCM 音频数据。
【硬件连接】
- 使用 USB 线把板子接入电脑
【运行效果】
- 播放音频文件,屏幕无现象
02_button_example
【程序说明】
- 本示例演示如何使用 OneButton 库读取 BOOT、PWM 按键的单击、双击和长按等状态,并通过串口打印。
【硬件连接】
- 使用 USB 线把板子接入电脑
【代码分析】
-
绑定回调函数
button1.attachClick(click1);
button1.attachDoubleClick(doubleclick1);
button1.attachLongPressStart(longPressStart1);
button1.attachLongPressStop(longPressStop1);
button1.attachDuringLongPress(longPress1);
【运行效果】
-
打开串口监视器
03_battery_example
【程序说明】
本示例演示 ESP32-C6-LCD-1.69 在屏幕上实时显示电池电压。
【硬件连接】
- 使用 USB 线把板子接入电脑
【运行效果】
-
打开串口监视器
04_es8311_example
【程序说明】
- 本示例演示使用 ESP32-C6-LCD-1.69 驱动 ES8311 音频编解码器,实现扬声器实时播放麦克风采集的声音。
【硬件连接】
- 使用 USB 线把板子接入电脑
【代码分析】
-
收到开始信号后循环读取音频数据并播放,收到停止信号后结束播放并等待下一次启动。
void es8311_test_task(void *arg)
{
const int limit_size_max = 1600;
uint8_t data[limit_size_max];
while (1)
{
if (xSemaphoreTake(es8311_recording_BinarySemaphore, portMAX_DELAY) == pdTRUE)
{
while (1)
{
i2s.readBytes((char *)data, limit_size_max);
i2s.write(data, limit_size_max);
if (xSemaphoreTake(es8311_stop_BinarySemaphore, 0) == pdTRUE)
break;
}
}
}
}
【运行效果】
- 屏幕无现象
- 长按 BOOT 按键不松手,扬声器实时播放麦克风采集的声音。
05_gfx_helloworld
【程序说明】
- 本示例演示 ESP32-C6-LCD-1.69 使用 GFX_Library_for_Arduino 库驱动屏幕并在屏幕上显示 HelloWorld
【硬件连接】
- 使用 USB 线把板子接入电脑
【代码分析】
-
配置屏幕接口以及屏幕的分辨率等
Arduino_DataBus *bus = new Arduino_HWSPI(LCD_DC, LCD_CS, LCD_SCK, LCD_DIN);
Arduino_GFX *gfx = new Arduino_ST7789(
bus, LCD_RST, 0 /* rotation */, true /* IPS */,
240 /* width */, 280 /* height */,
0 /* col offset 1 */, 20 /* row offset 1 */,
0 /* col offset 2 */, 20 /* row offset 2 */);
【运行效果】

06_gfx_pdq_graphicstest
【程序说明】
- 本示例演示 ESP32-C6-LCD-1.69 使用 GFX_Library_for_Arduino 库驱动屏幕进行图形测试,并显示分数
硬件连接
- 使用 USB 线把板子接入电脑
运行效果

07_gfx_clock
本示例演示 ESP32-C6-LCD-1.69 使用 GFX_Library_for_Arduino 库显示一个模拟时钟表盘
【硬件连接】
- 使用 USB 线把板子接入电脑
【运行效果】
08_gfx_u8g2_font
【程序说明】
- 本示例演示 ESP32-C6-LCD-1.69 使用 GFX_Library_for_Arduino 库通过加载字库,实现各国文字显示
【硬件连接】
- 使用 USB 线把板子接入电脑
【运行效果】
09_gfx_image
【程序说明】
- 本示例演示了 ESP32-C6-LCD-1.69 使用 GFX_Library_for_Arduino 库在屏幕上显示图片。
【硬件连接】
- 使用 USB 线把板子接入电脑
【准备工作】
- 打开 汉字取模软件
- 导入图片
images/image_1.jpg并转换,会生成 ·image_1.h· 文件

- 将
image_1.h拷贝到本工程 - 设置要显示的图片
【代码分析】
-
加载图片显示
gfx->draw16bitBeRGBBitmap(0, 0, (uint16_t *)gImage_img, 240, 280);
【运行效果】
10_esp_wifi_analyzer
【程序说明】
- 本示例演示 ESP32-C6-LCD-1.69 使用 GFX_Library_for_Arduino 库显示 WiFi 频段信号强度
【硬件连接】
- 使用 USB 线把板子接入电脑
【运行效果】

11_pcf85063_example
【程序说明】
- 本示例演示 ESP32-C6-LCD-1.69 获取 pcf85063 的时间和日期并显示到屏幕上。
【硬件连接】
- 使用 USB 线把板子接入电脑
【运行效果】
12_qmi8658_example
【程序说明】
- 本示例演示 ESP32-C6-LCD-1.69 获取 qmi8658 的 Accel、Gyro 和温度并显示到屏幕上。
【硬件连接】
- 使用 USB 线把板子接入电脑
【运行效果】
13_lvgl_arduino_v8
【程序说明】
- 本示例演示 ESP32-C6-LCD-1.69 运行 lvgl v8 版本示例。
【硬件连接】
- 使用 USB 线把板子接入电脑
【运行效果】
14_lvgl_arduino_v9
【程序说明】
- 本示例演示 ESP32-C6-LCD-1.69 运行 lvgl v9 版本示例。
【硬件连接】
- 使用 USB 线把板子接入电脑
【运行效果】
15_touch_example
【程序说明】
- 本示例演示 ESP32-C6-Touch-LCD-1.69 在屏幕上实时显示触摸坐标和滑动路径。
【硬件连接】
- 使用 USB 线把板子接入电脑
【运行效果】