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-S3-Touch-LCD-7C 到电脑后,在“工具”菜单中选择对应的串口号。
3. 示例程序包与库
- ESP32-S3-Touch-LCD-7C 的 Arduino 示例程序与所需库文件包含在示例程序包中。
- 解压后,Arduino 示例位于
Arduino/examples目录,库文件位于Arduino/libraries目录,可按照通用 Arduino 教程将库添加到 Arduino IDE 中。
ESP32-S3-Touch-LCD-7C 所需开发板安装说明
| 板名称 | 板安装要求 | 版本号要求 |
|---|---|---|
| ESP32 by Espressif Systems | “离线”安装/“在线”安装 | 3.5.5 |
| ESP32-audioI2S-master | “在线”安装 | 3.4.6 |
| LVGL | “在线”安装 | 8.4.0 |
参数配置

示例程序
| 示例程序 | 基础例程说明 |
|---|---|
| 01_I2C | 测试 I2C 接口通信 |
| 02_RTC | 测试 RTC 实时时钟功能 |
| 03_LCD | 测试 LCD 显示功能 |
| 04_ISOLATION_IO | 测试隔离 IO 功能 |
| 05_SD | 测试 SD 卡读写功能 |
| 06_TOUCH | 测试触摸屏功能 |
| 07_DISPLAY_BMP | 显示 BMP 图片 |
| 08_BAT_INFO | 测试电池信息读取 |
| 09_SPEAKER_MICROPHONE | 测试扬声器与麦克风 |
| 10_LVGL_CODEC | LVGL 编解码器示例 |
01_I2C
硬件连接
- 使用 USB 线将开发板接入电脑。
代码分析
I2C 背光控制代码
void setup() {
// Initialize the IO EXTENSION device for I2C communication.
DEV_I2C_Init();
IO_EXTENSION_Init();
delay(10);
}
void loop() {
// Turn on the LCD backlight by setting IO_EXTENSION_IO_2 high.
IO_EXTENSION_Output(IO_EXTENSION_IO_2, 1);
delay(500); // Wait for 500 milliseconds.
// Turn off the LCD backlight by setting IO_EXTENSION_IO_2 low.
IO_EXTENSION_Output(IO_EXTENSION_IO_2, 0);
delay(500); // Wait for 500 milliseconds.
}
代码解释
DEV_I2C_Init():初始化 I2C 总线,为 IO 扩展芯片通信做准备。IO_EXTENSION_Init():初始化外部 IO 扩展芯片。IO_EXTENSION_Output(IO_EXTENSION_IO_2, 1/0):控制IO_2输出高/低电平,用于打开/关闭 LCD 背光。delay(500):控制背光开关的闪烁节奏,便于观察输出是否正常。
运行效果
- 可看到 LCD 背光闪烁效果。
02_RTC
硬件连接
- 使用 USB 线将开发板接入电脑。
代码分析
RTC 时间读取代码
void loop() {
// Read current time from RTC
PCF85063A_Read_now(&Now_time);
// Format current time as a string
datetime_to_str(datetime_str, Now_time);
printf("Now_time is %s\r\n", datetime_str);
// Poll external IO pin for alarm (low level = alarm triggered)
if (IO_EXTENSION_Rtc_Int_Read() == 0)
{
// Re-enable alarm if repeated alarms are required
PCF85063A_Enable_Alarm();
printf("The alarm clock goes off.\r\n");
}
delay(1000); // Update every second
}
代码解释
PCF85063A_Read_now(&Now_time):从 PCF85063A RTC 读取当前时间到Now_time。datetime_to_str(datetime_str, Now_time):将时间结构体转换为字符串,便于输出与显示。printf("Now_time is %s..."):通过串口输出当前时间,便于验证 RTC 是否正常工作。IO_EXTENSION_Rtc_Int_Read() == 0:读取 RTC 中断引脚状态,低电平表示闹钟触发。PCF85063A_Enable_Alarm():闹钟触发后重新使能闹钟,便于后续重复触发测试。delay(1000):每秒更新一次时间与闹钟检测。
运行效果
-
串口打印 RTC 时间。
03_LCD
硬件连接
- 使用 USB 线将开发板接入电脑。
代码分析
LCD 显示测试代码
Paint_DrawString_EN(1, 70, "AaBbCc123", &Font16, RED, WHITE);
Paint_DrawNum(1, 100, 9.87654321, &Font20, 7, WHITE, BLACK);
Paint_DrawString_EN(1, 130, "AaBbCc123", &Font20, 0x000f, 0xfff0);
Paint_DrawString_EN(1, 160, "AaBbCc123", &Font24, RED, WHITE);
Paint_DrawString_CN(1, 190, "你好Abc", &Font24CN, WHITE, BLUE);
代码解释
Paint_DrawString_EN(...):在指定坐标绘制英文字符串,可指定字体、前景色与背景色。Paint_DrawNum(...):以指定字体与格式参数绘制浮点数字(示例用于验证数字渲染效果)。Paint_DrawString_CN(...):绘制中文字符串,用于验证中文字体与显示效果。
运行效果
-
屏幕显示测试内容。
-
可看到文本、图形和图片显示效果。
04_ISOLATION_IO
硬件连接
- 使用 USB 线将开发板接入电脑。
运行效果
- 烧录成功后,若 IO 均成功互联,屏幕显示绿色,否则显示红色。
05_SD
硬件连接
- 使用 USB 线将开发板接入电脑。
- 插入 Micro SD 卡到开发板。
代码分析
setup():- 初始化 SD 卡。
loop():- 测试 SD 卡读写功能。
运行效果
-
屏幕显示 SD 卡信息和测试结果。

06_TOUCH
硬件连接
- 使用 USB 线将开发板接入电脑。
代码分析
setup():- 初始化触摸屏。
loop():- 测试多点触控功能。
运行效果
- 触摸屏幕可正常触摸触摸屏。
- 可看到触摸点显示。
07_DISPLAY_BMP
硬件连接
- 使用 USB 线将开发板接入电脑。
- 插入包含 BMP 图片的 Micro SD 卡。
代码分析
setup():- 初始化 SD 卡和 LCD。
loop():- 读取并显示 BMP 图片。
运行效果
-
屏幕显示 BMP 图片。

08_BAT_INFO
硬件连接
- 使用 USB 线将开发板接入电脑。
- 连接锂电池到开发板。
代码分析
电池信息读取代码
#define BATTERY_CAPACITY_MAH 1500
void setup()
{
BatteryStatus bat_sta;
Serial.begin(115200);
DEV_I2C_Init();
delay(100);
bat_sta = battery_init(BATTERY_CAPACITY_MAH);
IO_EXTENSION_Init();
display_init();
if (bat_sta == BATTERY_NOT_CONNECT) {
display_show_not_connect();
} else if (bat_sta != BATTERY_OK) {
display_show_error(battery_status_to_string(bat_sta));
}
}
void loop()
{
BatteryInfo bat_info;
BatteryStatus bat_sta;
bat_sta = battery_get_info(&bat_info);
if (bat_sta == BATTERY_OK) {
display_show_info(&bat_info);
} else if (bat_sta == BATTERY_NOT_CONNECT) {
display_show_not_connect();
} else {
display_show_error(battery_status_to_string(bat_sta));
}
delay(1000);
}
代码解释
BATTERY_CAPACITY_MAH:配置电池标称容量,供电量估算与显示使用。Serial.begin(115200):初始化串口输出,便于调试。DEV_I2C_Init():初始化 I2C 总线,为电量计与 IO 扩展芯片通信做准备。battery_init(BATTERY_CAPACITY_MAH):初始化电池/电量计模块,返回当前电池状态。IO_EXTENSION_Init()/display_init():初始化 IO 扩展与显示模块,为后续界面显示做准备。battery_get_info(&bat_info):周期读取电池信息并写入bat_info。display_show_info(...)/display_show_not_connect()/display_show_error(...):根据读取状态在屏幕上显示信息、未连接提示或错误提示。delay(1000):每秒刷新一次电池信息显示。
运行效果
-
屏幕显示电池信息。

09_SPEAKER_MICROPHONE
硬件连接
- 使用 USB 线将开发板接入电脑。
- 连接扬声器和麦克风。
代码分析
setup():- 初始化音频编解码器。
loop():- 测试音频输入输出功能。
运行效果
-
可通过麦克风录音并通过扬声器播放录音。
10_LVGL_CODEC
硬件连接
- 使用 USB 线将开发板接入电脑。
代码分析
setup():- 初始化 LVGL 图形库。
loop():- 测试 LVGL 编解码器功能。
运行效果
-
屏幕显示 LVGL 界面,并且可以正常播放音乐(需要提前插入 SD 卡)。
