跳到主要内容

Arduino 开发

本章节包含以下部分,请按需阅读:

Arduino 入门教程

初次接触 Arduino ESP32 开发,想要快速上手?我们为您准备了一套通用的 入门教程

请注意:该教程使用 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通过库管理器或手动安装
lvgllvgl 显示显示框架v8.3.10通过库管理器或手动安装
FastLED幻彩 LED 控制库v3.10.3通过库管理器或手动安装
JPEGDECJPEG 图像解码库v1.6.1通过库管理器或手动安装
PNGdecPNG 图像解码库v1.0.2通过库管理器或手动安装
Time时间处理基础库1.6.1通过库管理器或手动安装
TJpg_Decoder超轻量级 JPEG 解码库1.0.8通过库管理器或手动安装
版本兼容性说明

LVGL 及其驱动库的版本之间存在较强的依赖关系。例如,为 LVGL v8 编写的驱动可能不兼容 LVGL v9。为确保示例能够稳定复现,推荐使用上表列出的特定版本。混合使用不同版本的库可能导致编译失败或运行时异常。

安装步骤:

  1. 下载 示例程序包

  2. 将其 Arduino\libraries 目录下的所有文件夹(Arduino_DriveBus、GFX_Library_for_Arduino 等)复制到 Arduino 的库文件夹中。

    信息

    Arduino 库文件夹的路径通常是:c:\Users\<用户名>\Documents\Arduino\libraries

    也可以在 Arduino IDE 中通过 文件 > 首选项,查看“项目文件夹位置”来定位。库文件夹就是此路径下的 libraries 文件夹。

  3. 其他安装方式请参考: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 高频调度,兼顾流畅性与资源消耗。

运行效果

03_Video_demo

程序说明

  • 本示例演示了 SD 卡检测、视频多媒体播放

硬件连接

  • 将开发板接入电脑

代码分析

  • setup() 函数
    • 硬件初始化:依次完成 Flash 测试、ST7789 显示屏初始化、背光设置、WS2812B 灯带初始化;
    • RGB 自检:屏幕和灯带同步依次显示红 / 绿 / 蓝三色,各保持 1 秒后关闭灯带;
    • SD 卡检测:识别 SD 卡类型,无卡则屏幕显示错误信息并终止后续流程;有卡则检查视频文件,存在视频则初始化视频播放模块;
  • loop() 函数
    • 保底逻辑:SD 卡未检测到时,仅延迟循环,不执行任何播放操作;
    • 播放分流:已初始化视频模块则调用 Video_Play_Loop() 循环播放视频;

运行效果