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.47 开发板的示例程序包。包内的 arduino\libraries 目录已包含本教程所需的全部库文件。
| 库或文件名称 | 说明 | 版本 | 安装方式 |
|---|---|---|---|
| lvgl | LVGL 图形库 | v8.4.0 | “在线”安装 (需要复制 demos 文件夹至 src) |
| GFX_Library_for_Arduino | GFX 图形化库 | v1.5.9 | 在线或手动安装 |
| FastIMU | IUM 驱动库 | v1.2.8 | 在线或手动安装 |
| esp_lcd_touch_axs5106l | 触摸驱动库 | 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_gfx_helloworld | 屏幕上显示 HelloWorld | GFX_Library_for_Arduino |
| 02_qmi8658_output | 串口打印 QMI8658 的数据 | FastIMU |
| 03_sd_card_test | 测试 SD 卡 | - |
| 04_lvgl_arduino_v8 | lvgl 示例程序 | lvgl、GFX_Library_for_Arduino、esp_lcd_touch_axs5106l |
| 05_lvgl_battery | 使用 lvgl 库显示电池电压 | lvgl、GFX_Library_for_Arduino、esp_lcd_touch_axs5106l |
| 06_lvgl_brightness | 使用 lvgl 库控制和显示屏幕亮度 | lvgl、GFX_Library_for_Arduino、esp_lcd_touch_axs5106l |
| 07_lvgl_qmi8658 | 使用 lvgl 库显示 QMI8658 的数据 | lvgl、GFX_Library_for_Arduino、FastIMU、esp_lcd_touch_axs5106l |
| 08_lvgl_image | 使用 lvgl 库显示图片 | lvgl、GFX_Library_for_Arduino、esp_lcd_touch_axs5106l |
01_gfx_helloworld
【程序说明】
- 本示例演示了 ESP32-C6-Touch-LCD-1.47 使用 GFX_Library_for_Arduino 库驱动屏幕并在屏幕上显示 HelloWorld
【硬件连接】
- 将板子接入电脑
【代码分析】
-
创建 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_qmi8658_output
【程序说明】
- 本示例演示了 ESP32-C6-Touch-LCD-1.47 获取 QMI8658 的数据并使用串口打印
【硬件连接】
- 将板子接入电脑
【代码分析】
-
初始化 QMI8658
int err = IMU.init(calib, IMU_ADDRESS);
if (err != 0) {
Serial.print("Error initializing IMU: ");
Serial.println(err);
while (true) {
;
}
}
【运行效果】
-
打开串口监视器,可以看到打印的 x、y、z 轴的 accel 和 gyro 数据
03_sd_card_test
【程序说明】
- 本示例演示了 ESP32-C6-Touch-LCD-1.47 测试 SD 卡的读写功能
【硬件连接】
- 将板子接入电脑
- 将 Micro SD 卡插入卡槽(SD 卡需要格式化为 FAT32)
【代码分析】
-
SPI 接口初始化以及 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;
}
【运行效果】
-
将 SD 卡插入电脑,可以发现多了两个文件 test.txt foo.test。其中 foo.txt 的内容为 Hello World!,test.txt 的内容为空
04_lvgl_arduino_v8
【程序说明】
- 本示例演示了 ESP32-C6-Touch-LCD-1.47 运行 lvgl 示例程序
【硬件连接】
- 将板子接入电脑
- 将 Micro SD 卡插入卡槽(SD 卡需要格式化为 FAT32)
【代码分析】
-
如果 lvgl 库是在线安装,需要复制 demos 文件夹至 src
lv_demo_widgets();
// lv_demo_benchmark();
// lv_demo_keypad_encoder();
// lv_demo_music();
// lv_demo_stress();
【运行效果】
-
可以进行触摸进行操作
05_lvgl_battery
【程序说明】
- 本示例演示了 ESP32-C6-Touch-LCD-1.47 使用 lvgl 库在屏幕上显示电池电压以及 ADC 的值
【硬件连接】
- 将板子接入电脑
- 将 Micro SD 卡插入卡槽(SD 卡需要格式化为 FAT32)
【代码分析】
-
ui 的初始化,并创建一个 1000ms 的定时器,用于获取 adc 的数据并将该数据转换成电压
lvgl_battery_ui_init(lv_scr_act());
【运行效果】
06_lvgl_brightness
【程序说明】
- 本示例演示了 ESP32-C6-Touch-LCD-1.47 使用 lvgl 库在屏幕上显示屏幕亮度,通过滑动条可以控制屏幕亮度
【硬件连接】
- 将板子接入电脑
- 将 Micro SD 卡插入卡槽(SD 卡需要格式化为 FAT32)
【代码分析】
-
ui 的初始化,并创建一个滑动条值更改回调,当滑动条的值发生改变时,修改屏幕亮度
lvgl_brightness_ui_init(lv_scr_act());
【运行效果】
07_lvgl_qmi8658
【程序说明】
- 本示例演示使用 ESP32-C6-Touch-LCD-1.47 获取 qmi8658 的数据,并通过 lvgl 库将数据显示出来
【硬件连接】
- 将板子接入电脑
- 将 Micro SD 卡插入卡槽(SD 卡需要格式化为 FAT32)
【代码分析】
-
ui 的初始化,并创建一个 100ms 的定时器,用于获取 qmi8658 的数据
lvgl_qmi8658_ui_init(lv_scr_act());
【运行效果】
08_lvgl_image
【程序说明】
- 本示例演示了
ESP32-C6-Touch-LCD-1.47运行 lvgl 显示图片。
【硬件连接】
- 使用 USB 线把板子接入电脑
【准备工作】
- 打开 lvgl 图片转换网站
- 导入图片
images/image_1.jpg并转换,会生成image_1.c文件
- 将
image_1.c拷贝到本工程文件夹内 - 在
06_lvgl_image.ino加入以下代码,声明图片
LV_IMG_DECLARE(image_1);
【代码分析】
- 设置要显示的图片
lv_img_set_src(img, &image_1);
【运行效果】
