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. 安装库
- 在安装 Arduino 库时,通常有两种方式可供选择:在线安装 和 离线安装。若库安装要求离线安装,则必须使用提供的库文件。
- 对于大多数库,用户可以通过 Arduino 软件的在线库管理器轻松搜索并安装。然而,一些开源库或自定义库未被同步到 Arduino 库管理器中,因此无法通过在线搜索获取。在这种情况下,用户只能通过离线方式手动安装这些库。
- 可从 此链接 的
Arduino目录中,下载 ESP32-C6-LCD-1.3 开发板的示例程序包。包内的Arduino\libraries目录已包含本教程所需的全部库文件。
| 库或文件名称 | 说明 | 版本 | 安装方式 |
|---|---|---|---|
| Adafruit_GFX_Library | 图形绘制底层库 | v1.11.9 | 通过库管理器或手动安装 |
| Arduino_GFX | 支持 ST7789 芯片的显示驱动图形库 | v1.4.9 | 通过库管理器或手动安装 |
| ArduinoJson | 轻量级 JSON 解析 / 生成库 | v6.21.2 | 通过库管理器或手动安装 |
| lvgl | lvgl 显示显示框架 | v8.3.10 | 通过库管理器或手动安装 |
| FastLED | 幻彩 LED 控制库 | v3.10.3 | 通过库管理器或手动安装 |
| JPEGDEC | JPEG 图像解码库 | v1.6.1 | 通过库管理器或手动安装 |
| PNGdec | PNG 图像解码库 | v1.0.2 | 通过库管理器或手动安装 |
| Time | 时间处理基础库 | 1.6.1 | 通过库管理器或手动安装 |
| TJpg_Decoder | 超轻量级 JPEG 解码库 | 1.0.8 | 通过库管理器或手动安装 |
版本兼容性说明
LVGL 及其驱动库的版本之间存在较强的依赖关系。例如,为 LVGL v8 编写的驱动可能不兼容 LVGL v9。为确保示例能够稳定复现,推荐使用上表列出的特定版本。混合使用不同版本的库可能导致编译失败或运行时异常。
安装步骤:
-
下载 示例程序包。
-
将其
Arduino\libraries目录下的所有文件夹(Arduino_DriveBus、GFX_Library_for_Arduino 等)复制到 Arduino 的库文件夹中。信息Arduino 库文件夹的路径通常是:
c:\Users\<用户名>\Documents\Arduino\libraries。也可以在 Arduino IDE 中通过 文件 > 首选项,查看“项目文件夹位置”来定位。库文件夹就是此路径下的
libraries文件夹。 -
其他安装方式请参考:Arduino 库管理教程。
3. 安装 ESP32 开发板
- ESP32 相关主板在 Arduino IDE 使用,须先安装“esp32 by Espressif Systems”开发板的软件包
- 根据板安装要求进行安装,一般推荐“在线安装”, 若在线安装失败,则使用“离线安装”
- 安装教程,详见:Arduino 板管理教程
ESP32-C6-LCD-1.3 所需开发板安装说明
| 板名称 | 板安装要求 | 版本号要求 |
|---|---|---|
| ESP32 by Espressif Systems | “离线”安装/“在线”安装 | 3.0.1 |
示例程序
Arduino 示例程序位于 示例程序包 的 Arduino/examples 目录中。
| 示例程序 | 基础例程说明 | 依赖库 |
|---|---|---|
| 01_LVGL_Arduino | 展示了基本的图形库功能,硬件参数检测并显示 | FastLED,lvgl |
| 02_LVGL_WeatherClock | 展示了基本的图形库功能,也可以用于测试显示屏的基础性能以及随机文本显示效果 | GFX_Library_for_Arduino,Arduino_DriveBus,Adafruit_XCA9554 |
| 03_Video_demo | 根据屏幕尺寸,在显示屏上按行列打印 ASCII 字符 | GFX_Library_for_Arduino |
ESP32-C6-LCD-1.3 选择型号

Arduino 工程参数设置

01_LVGL_Arduino
程序说明
- 本示例演示了通过 LVGL 图形界面展示硬件信息(Flash/SD 卡容量、无线设备扫描数量)
硬件连接
- 将开发板接入电脑
代码分析
setup()函数:Flash_test():检测 ESP32 Flash 芯片容量并赋值给全局变量Flash_Size;LCD_Init():初始化 ST7789 显示屏(配置 SPI、屏幕指令、背光等);Lvgl_Init():初始化 LVGL 图形库,绑定 ST7789 显示刷新函数、创建基础 LVGL 显示缓冲区,注册触摸(占位)和显示驱动;SD_Init():初始化 SD 卡,检测卡类型并计算总容量赋值给SDCard_Size;Lvgl_Example1():创建 LVGL 界面(Onboard 参数面板),初始化 WS2812B 和流水灯 / 按键;Wireless_Test2():创建 FreeRTOS 任务WirelessScanTask,在核心 0 上后台执行 WiFi/BLE 设备扫描,结果存入WIFI_NUM/BLE_NUM。
loop()函数:Timer_Loop():调用 LVGL 核心定时器处理函数lv_timer_handler(),维持界面刷新、定时器(如按键检测、流水灯、参数刷新)的正常执行;delay(5):简单延时,保证 LVGL 刷新频率。
运行效果

02_LVGL_WeatherClock
程序说明
- 本示例演示了天气时钟系统,在 ST7789 显示屏上呈现天气时钟功能,兼顾运行流畅性与 CPU 资源占用优化。
硬件连接
- 将开发板接入电脑
代码分析
setup函数- 串口初始化:以 115200 波特率开启串口,用于系统日志打印,便于调试;
- 硬件 / 驱动初始化:依次执行 Flash 测试、ST7789 显示屏初始化、LVGL 图形库初始化、SD 卡初始化;
- 外设配置:将显示屏背光调至 100%,初始化天气时钟业务逻辑;
- 日志输出:通过串口反馈初始化进度,便于排查启动异常。
loop函数- LVGL 核心处理:调用
Timer_Loop,保证 LVGL 定时器、动画正常更新; - 业务逻辑循环:执行
WeatherClock_Loop,处理天气时钟的实时数据更新与显示逻辑; - 资源优化:仅保留 1ms 延迟,既避免 CPU 占用过高,又保证 LVGL 高频调度,兼顾流畅性与资源消耗。
- LVGL 核心处理:调用
运行效果
![]() | ![]() |
|---|
03_Video_demo
程序说明
- 本示例演示了 SD 卡检测、视频多媒体播放
硬件连接
- 将开发板接入电脑
代码分析
setup()函数- 硬件初始化:依次完成 Flash 测试、ST7789 显示屏初始化、背光设置、WS2812B 灯带初始化;
- RGB 自检:屏幕和灯带同步依次显示红 / 绿 / 蓝三色,各保持 1 秒后关闭灯带;
- SD 卡检测:识别 SD 卡类型,无卡则屏幕显示错误信息并终止后续流程;有卡则检查视频文件,存在视频则初始化视频播放模块;
loop()函数- 保底逻辑:SD 卡未检测到时,仅延迟循环,不执行任何播放操作;
- 播放分流:已初始化视频模块则调用
Video_Play_Loop()循环播放视频;
运行效果
![]() |
|---|


