跳到主要内容

Arduino 开发

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

Arduino 入门教程

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

请注意:该教程使用 ESP32-S3-Zero 作为教学示例,所有硬件代码均基于其引脚布局。在动手实践前,建议您对照手中的开发板引脚图,确认引脚配置无误。

配置开发环境

1. 安装和配置 Arduino IDE

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

参数配置

ESP32-S3-Touch-LCD-7C-Arduino-setting

示例程序

示例程序基础例程说明
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_CODECLVGL 编解码器示例

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 时间。

    ESP32-S3-Touch-LCD-7C-Arduino-example-1


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(...):绘制中文字符串,用于验证中文字体与显示效果。

运行效果

  • 屏幕显示测试内容。

  • 可看到文本、图形和图片显示效果。

    ESP32-S3-Touch-LCD-7C-IDF-example-3


04_ISOLATION_IO

硬件连接

  • 使用 USB 线将开发板接入电脑。

运行效果

  • 烧录成功后,若 IO 均成功互联,屏幕显示绿色,否则显示红色。

05_SD

硬件连接

  • 使用 USB 线将开发板接入电脑。
  • 插入 Micro SD 卡到开发板。

代码分析

  • setup()
    • 初始化 SD 卡。
  • loop()
    • 测试 SD 卡读写功能。

运行效果

  • 屏幕显示 SD 卡信息和测试结果。

    ESP32-S3-Touch-LCD-7C-IDF-example-6


06_TOUCH

硬件连接

  • 使用 USB 线将开发板接入电脑。

代码分析

  • setup()
    • 初始化触摸屏。
  • loop()
    • 测试多点触控功能。

运行效果

  • 触摸屏幕可正常触摸触摸屏。
  • 可看到触摸点显示。

07_DISPLAY_BMP

硬件连接

  • 使用 USB 线将开发板接入电脑。
  • 插入包含 BMP 图片的 Micro SD 卡。

代码分析

  • setup()
    • 初始化 SD 卡和 LCD。
  • loop()
    • 读取并显示 BMP 图片。

运行效果

  • 屏幕显示 BMP 图片。

    ESP32-S3-Touch-LCD-7C-IDF-example-8


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):每秒刷新一次电池信息显示。

运行效果

  • 屏幕显示电池信息。

    ESP32-S3-Touch-LCD-7C-Arduino-example-2


09_SPEAKER_MICROPHONE

硬件连接

  • 使用 USB 线将开发板接入电脑。
  • 连接扬声器和麦克风。

代码分析

  • setup()
    • 初始化音频编解码器。
  • loop()
    • 测试音频输入输出功能。

运行效果

  • 可通过麦克风录音并通过扬声器播放录音。

    ESP32-S3-Touch-LCD-7C-IDF-example-9


10_LVGL_CODEC

硬件连接

  • 使用 USB 线将开发板接入电脑。

代码分析

  • setup()
    • 初始化 LVGL 图形库。
  • loop()
    • 测试 LVGL 编解码器功能。

运行效果

  • 屏幕显示 LVGL 界面,并且可以正常播放音乐(需要提前插入 SD 卡)。

    ESP32-S3-Touch-LCD-7C-Arduino-example-3