跳到主要内容

Arduino 开发

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

Arduino 入门教程

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

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

配置开发环境

1. 安装和配置 Arduino IDE

请参考 安装和配置 Arduino IDE 教程 下载安装 Arduino IDE 并添加 ESP32 支持。

2. 安装库

要运行示例,需要安装对应的库。

可从 该处 下载 ESP32-C6-Touch-LCD-1.69 开发板的示例程序包。包内的 arduino\libraries 目录已包含本教程所需的全部库文件。

库或文件名称说明版本安装方式
lvglLVGL 图形库v8.4.0在线或手动安装
GFX_Library_for_ArduinoGFX 图形化库v1.6.0在线或手动安装
U8g2图形显示库v2.35.30在线或手动安装
SensorLib传感器库v0.3.1在线或手动安装
OneButton按键库v2.6.1在线或手动安装
版本兼容性说明

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

安装步骤:

  1. 进入已下载的 示例程序包

  2. 将其 arduino\libraries 目录下的所有文件夹(lvgl 和 lv_conf.h 等)复制到 Arduino 的库文件夹中。

    信息

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

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

  3. 其他安装方式请参考:Arduino 库管理教程

3. Arduino 工程参数设置

[ESP32-C6-Touch-LCD-1.69]

示例程序

Arduino 示例程序

示例程序基础例程说明依赖库
01_audio_out通过 I2S 接口播放 PCM 数据音频-
02_button_example屏幕上显示电池电压OneButton
03_battery_exampleBOOT 按键单击、双击、长按等OneButton
04_es8311_example扬声器实时播放麦克风采集的声音-
05_gfx_helloworld屏幕上显示 HelloWorldGFX_Library_for_Arduino
06_gfx_pdq_graphicstest进行图形测试,并显示分数GFX_Library_for_Arduino
07_gfx_clock屏幕上显示一个模拟时钟表盘GFX_Library_for_Arduino
08_gfx_u8g2_font通过加载字库,实现各国文字显示GFX_Library_for_Arduino 、U8g2
09_gfx_image屏幕显示图片GFX_Library_for_Arduino
10_esp_wifi_analyzer屏幕显示 WiFi 频段信号强度GFX_Library_for_Arduino
11_pcf85063_example屏幕显示 RTC 时间GFX_Library_for_Arduino、SensorLib
12_qmi8658_example屏幕显示 IMU 数据GFX_Library_for_Arduino、SensorLib
13_lvgl_arduino_v8lvgl v8 版本示例程序lvgl(v8.4.0)、GFX_Library_for_Arduino、SensorLib
14_lvgl_arduino_v9lvgl v9 版本示例程序lvgl(v9.3.0)、GFX_Library_for_Arduino、SensorLib
15_touch_example在屏幕上实时显示触摸坐标和滑动路径GFX_Library_for_Arduino、SensorLib

01_audio_out

【程序说明】

  • 本示例演示 ESP32-C6-LCD-1.69 播放 PCM 音频数据。

【硬件连接】

  • 使用 USB 线把板子接入电脑

【运行效果】

  • 播放音频文件,屏幕无现象

02_button_example

【程序说明】

  • 本示例演示如何使用 OneButton 库读取 BOOT、PWM 按键的单击、双击和长按等状态,并通过串口打印。

【硬件连接】

  • 使用 USB 线把板子接入电脑

【代码分析】

  • 绑定回调函数

    button1.attachClick(click1);
    button1.attachDoubleClick(doubleclick1);
    button1.attachLongPressStart(longPressStart1);
    button1.attachLongPressStop(longPressStop1);
    button1.attachDuringLongPress(longPress1);

【运行效果】

  • 打开串口监视器

03_battery_example

【程序说明】

本示例演示 ESP32-C6-LCD-1.69 在屏幕上实时显示电池电压。

【硬件连接】

  • 使用 USB 线把板子接入电脑

【运行效果】

  • 打开串口监视器

04_es8311_example

【程序说明】

  • 本示例演示使用 ESP32-C6-LCD-1.69 驱动 ES8311 音频编解码器,实现扬声器实时播放麦克风采集的声音。

【硬件连接】

  • 使用 USB 线把板子接入电脑

【代码分析】

  • 收到开始信号后循环读取音频数据并播放,收到停止信号后结束播放并等待下一次启动。

    void es8311_test_task(void *arg)
    {
    const int limit_size_max = 1600;
    uint8_t data[limit_size_max];
    while (1)
    {
    if (xSemaphoreTake(es8311_recording_BinarySemaphore, portMAX_DELAY) == pdTRUE)
    {
    while (1)
    {
    i2s.readBytes((char *)data, limit_size_max);
    i2s.write(data, limit_size_max);
    if (xSemaphoreTake(es8311_stop_BinarySemaphore, 0) == pdTRUE)
    break;
    }
    }
    }
    }

【运行效果】

  • 屏幕无现象
  • 长按 BOOT 按键不松手,扬声器实时播放麦克风采集的声音。

05_gfx_helloworld

【程序说明】

  • 本示例演示 ESP32-C6-LCD-1.69 使用 GFX_Library_for_Arduino 库驱动屏幕并在屏幕上显示 HelloWorld

【硬件连接】

  • 使用 USB 线把板子接入电脑

【代码分析】

  • 配置屏幕接口以及屏幕的分辨率等

    Arduino_DataBus *bus = new Arduino_HWSPI(LCD_DC, LCD_CS, LCD_SCK, LCD_DIN);
    Arduino_GFX *gfx = new Arduino_ST7789(
    bus, LCD_RST, 0 /* rotation */, true /* IPS */,
    240 /* width */, 280 /* height */,
    0 /* col offset 1 */, 20 /* row offset 1 */,
    0 /* col offset 2 */, 20 /* row offset 2 */);

【运行效果】

06_gfx_pdq_graphicstest

【程序说明】

  • 本示例演示 ESP32-C6-LCD-1.69 使用 GFX_Library_for_Arduino 库驱动屏幕进行图形测试,并显示分数

硬件连接

  • 使用 USB 线把板子接入电脑

运行效果

07_gfx_clock

本示例演示 ESP32-C6-LCD-1.69 使用 GFX_Library_for_Arduino 库显示一个模拟时钟表盘

【硬件连接】

  • 使用 USB 线把板子接入电脑

【运行效果】

08_gfx_u8g2_font

【程序说明】

  • 本示例演示 ESP32-C6-LCD-1.69 使用 GFX_Library_for_Arduino 库通过加载字库,实现各国文字显示

【硬件连接】

  • 使用 USB 线把板子接入电脑

【运行效果】

09_gfx_image

【程序说明】

  • 本示例演示了 ESP32-C6-LCD-1.69 使用 GFX_Library_for_Arduino 库在屏幕上显示图片。

【硬件连接】

  • 使用 USB 线把板子接入电脑

【准备工作】

  • 打开 汉字取模软件
  • 导入图片 images/image_1.jpg并转换,会生成 ·image_1.h· 文件

  • image_1.h拷贝到本工程
  • 设置要显示的图片

【代码分析】

  • 加载图片显示

    gfx->draw16bitBeRGBBitmap(0, 0, (uint16_t *)gImage_img, 240, 280);

【运行效果】

10_esp_wifi_analyzer

【程序说明】

  • 本示例演示 ESP32-C6-LCD-1.69 使用 GFX_Library_for_Arduino 库显示 WiFi 频段信号强度

【硬件连接】

  • 使用 USB 线把板子接入电脑

【运行效果】

11_pcf85063_example

【程序说明】

  • 本示例演示 ESP32-C6-LCD-1.69 获取 pcf85063 的时间和日期并显示到屏幕上。

【硬件连接】

  • 使用 USB 线把板子接入电脑

【运行效果】

12_qmi8658_example

【程序说明】

  • 本示例演示 ESP32-C6-LCD-1.69 获取 qmi8658 的 Accel、Gyro 和温度并显示到屏幕上。

【硬件连接】

  • 使用 USB 线把板子接入电脑

【运行效果】

13_lvgl_arduino_v8

【程序说明】

  • 本示例演示 ESP32-C6-LCD-1.69 运行 lvgl v8 版本示例。

【硬件连接】

  • 使用 USB 线把板子接入电脑

【运行效果】

14_lvgl_arduino_v9

【程序说明】

  • 本示例演示 ESP32-C6-LCD-1.69 运行 lvgl v9 版本示例。

【硬件连接】

  • 使用 USB 线把板子接入电脑

【运行效果】

15_touch_example

【程序说明】

  • 本示例演示 ESP32-C6-Touch-LCD-1.69 在屏幕上实时显示触摸坐标和滑动路径。

【硬件连接】

  • 使用 USB 线把板子接入电脑

【运行效果】