ESP32-C6-Touch-AMOLED-1.8 是一款微雪 (Waveshare) 设计的高性能、高集成的微控制器开发板。在较小的板型下,板载了 1.8 英寸电容高清 AMOLED 屏、高度集成的电源管理芯片、六轴传感器 (三轴加速度计与三轴陀螺仪)、RTC 和低功耗音频编解码芯片等外设,方便开发并嵌入应用到产品中。



本章节包含以下部分,请按需阅读:
请参考 安装和配置 Arduino IDE 教程 下载安装 Arduino IDE 并添加 ESP32 支持。
Arduino 目录中,下载 ESP32-C6-Touch-AMOLED-1.8 开发板的示例程序包。包内的 Arduino\libraries 目录已包含本教程所需的全部库文件。| 库或文件名称 | 说明 | 版本 | 安装方式 |
|---|---|---|---|
| GFX Library for Arduino | ST7789 显示驱动图形库 | v1.6.4 | 通过库管理器或手动安装 |
| SensorLib | PCF85063、QMI8658 传感器驱动库 | v0.3.3 | 通过库管理器或手动安装 |
| XPowersLib | AXP2101 驱动库 | v0.2.6 | 通过库管理器或手动安装 |
| lvgl | lvgl 显示显示框架 | v8.4.0 | 通过库管理器或手动安装 |
| Arduino_DriveBus | I2C, 触摸驱动库 | v1.0.1 | 手动安装 |
| Adafruit_BusIO | 抽象化 I2C、SPI | v1.0.1 | 通过库管理器或手动安装 |
| Adafruit_XCA9554 | I2C GPIO 扩展器库 | v1.0.1 | 通过库管理器或手动安装 |
| Mylibrary | 开发板引脚宏定义 | —— | 手动安装 |
| ui_a | 自定义 ui 库 | —— | 手动安装 |
| ui_b | 自定义 ui 库库 | —— | 手动安装 |
| ui_c | 自定义 ui 库 | —— | 手动安装 |
| lv_conf.h | LVGL 配置文件 | —— | 手动安装 |
LVGL 及其驱动库的版本之间存在较强的依赖关系。例如,为 LVGL v8 编写的驱动可能不兼容 LVGL v9。为确保示例能够稳定复现,推荐使用上表列出的特定版本。混合使用不同版本的库可能导致编译失败或运行时异常。
安装步骤:
下载 示例程序包。
将其 Arduino\libraries 目录下的所有文件夹(Arduino_DriveBus、GFX_Library_for_Arduino 等)复制到 Arduino 的库文件夹中。
Arduino 库文件夹的路径通常是:c:\Users\<用户名>\Documents\Arduino\libraries。
也可以在 Arduino IDE 中通过 文件 > 首选项,查看“项目文件夹位置”来定位。库文件夹就是此路径下的 libraries 文件夹。
其他安装方式请参考:Arduino 库管理教程。
Arduino 示例程序位于 示例程序包 的 Arduino/examples 目录中。
| 示例程序 | 基础例程说明 | 依赖库 |
|---|---|---|
| 01_HelloWorld | 展示了基本的图形库功能,也可以用于测试显示屏的基础性能以及随机文本显示效果 | GFX_Library_for_Arduino |
| 02_Drawing_board | 展示了基本的图形库功能,也可以用于测试显示屏的基础性能以及随机文本显示效果 | GFX_Library_for_Arduino,Arduino_DriveBus,Adafruit_XCA9554 |
| 03_GFX_AsciiTable | 根据屏幕尺寸,在显示屏上按行列打印 ASCII 字符 | GFX_Library_for_Arduino |
| 04_GFX_FT3168_Image | 展示显示图片效果,通过触摸更换显示的图片 | GFX_Library_for_Arduino,Arduino_DriveBus,Adafruit_XCA9554 |
| 05_GFX_PCF85063_simpleTime | GFX 库显示当前时间 | SensorLib,GFX_Library_for_Arduino |
| 06_GFX_ESPWiFiAnalyzer | 在屏幕上绘制 WiFi 频段信号强度 | GFX_Library_for_Arduino |
| 07_GFX_Clock | 通过简单的标记指针和时间管理实现时钟 | GFX_Library_for_Arduino |
| 08_LVGL_Animation | 自定义 UI,控制背光亮度 | LVGL,Arduino_DriveBus,ui_a |
| 09_LVGL_change_background | 自定义 UI,控制背景色 | LVGL,Arduino_DriveBus,ui_b |
| 10_LVGL_PCF85063_simpleTime | LVGL 库显示当前时间 | LVGL,SensorLib |
| 11_LVGL_QMI8658_ui | LVGL 绘制加速度折线图 | LVGL,SensorLib |
| 12_LVGL_Widgets | LVGL 演示 | LVGL,Arduino_DriveBus ,Adafruit_XCA9554 |
| 13_ES8311 | ES8311 驱动示例,播放简单的音频 | —— |
| 14_LVGL_Sqprj | squareline ui 结合 LVGL 示例 | LVGL |

显示初始化:
if (!gfx->begin()) {
USBSerial.println("gfx->begin() failed!");
}
清屏并显示文本:
gfx->fillScreen(BLACK);
gfx->setCursor(10, 10);
gfx->setTextColor(RED);
gfx->println("Hello World!");
动图显示:
gfx->setCursor(random(gfx->width()), random(gfx->height()));
gfx->setTextColor(random(0xffff), random(0xffff));
gfx->setTextSize(random(6), random(6), random(2));
gfx->println("Hello World!");

显示屏初始化与亮度渐变动画:
gfx->begin();
gfx->fillScreen(WHITE);
for (int i = 0; i <= 255; i++) {
gfx->Display_Brightness(i);
gfx->setCursor(30, 150);
gfx->setTextColor(BLUE);
gfx->setTextSize(4);
gfx->println("Loading board");
delay(3);
}
触摸中断处理和坐标读取:
gfx->fillScreen(BLACK);
gfx->setCursor(10, 10);
gfx->setTextColor(RED);
gfx->println("Hello World!");
动图显示:
void Arduino_IIC_Touch_Interrupt(void) {
FT3168->IIC_Interrupt_Flag = true;
}
int32_t touchX = FT3168->IIC_Read_Device_Value(FT3168->Arduino_IIC_Touch::Value_Information::TOUCH_COORDINATE_X);
int32_t touchY = FT3168->IIC_Read_Device_Value(FT3168->Arduino_IIC_Touch::Value_Information::TOUCH_COORDINATE_Y);
if (FT3168->IIC_Interrupt_Flag == true) {
FT3168->IIC_Interrupt_Flag = false;
USBSerial.printf("Touch X:%d Y:%d\n", touchX, touchY);
if (touchX > 20 && touchY > 20) {
gfx->fillCircle(touchX, touchY, 5, BLUE);
}
}

数据总线和图形显示对象的创建
Arduino_DataBus *bus = new Arduino_ESP32QSPI(
LCD_CS /* CS */, LCD_SCLK /* SCK */, LCD_SDIO0 /* SDIO0 */, LCD_SDIO1 /* SDIO1 */,
LCD_SDIO2 /* SDIO2 */, LCD_SDIO3 /* SDIO3 */);
Arduino_GFX *gfx = new Arduino_SH8601(bus, -1 /* RST */,
0 /* rotation */, false /* IPS */, LCD_WIDTH, LCD_HEIGHT);
绘制行列编号和字符表
gfx->setTextColor(GREEN);
for (int x = 0; x < numRows; x++) {
gfx->setCursor(10 + x * 8, 2);
gfx->print(x, 16);
}
gfx->setTextColor(BLUE);
for (int y = 0; y < numCols; y++) {
gfx->setCursor(2, 12 + y * 10);
gfx->print(y, 16);
}
char c = 0;
for (int y = 0; y < numRows; y++) {
for (int x = 0; x < numCols; x++) {
gfx->drawChar(10 + x * 8, 12 + y * 10, c++, WHITE, BLACK);
}
}

if (fingers_number > 0) {
switch (Image_Flag) {
case 0: gfx->draw16bitRGBBitmap(0, 0, (uint16_t *)gImage_1, LCD_WIDTH, LCD_HEIGHT); break;
case 1: gfx->draw16bitRGBBitmap(0, 0, (uint16_t *)gImage_2, LCD_WIDTH, LCD_HEIGHT); break;
case 2: gfx->draw16bitRGBBitmap(0, 0, (uint16_t *)gImage_3, LCD_WIDTH, LCD_HEIGHT); break;
case 3: gfx->draw16bitRGBBitmap(0, 0, (uint16_t *)gImage_4, LCD_WIDTH, LCD_HEIGHT); break;
case 4: gfx->draw16bitRGBBitmap(0, 0, (uint16_t *)gImage_5, LCD_WIDTH, LCD_HEIGHT); break;
}
Image_Flag++;
if (Image_Flag > 4) {
Image_Flag = 0;
}
}
![]() | ![]() | ![]() |
|---|
setup:进行程序的初始化设置
loop:在程序运行过程中不断检查时间变化并更新显示屏上的时间显示
setup:为整个程序进行初始化准备
loop:主要的程序逻辑,包括进行 WiFi 网络扫描、处理扫描结果、绘制图表和显示统计信息,以及根据需要进行节能操作

void redraw_hands_cached_draw_and_erase() {
gfx->startWrite();
draw_and_erase_cached_line(center, center, nsx, nsy, SECOND_COLOR, cached_points, sHandLen + 1, false, false);
draw_and_erase_cached_line(center, center, nhx, nhy, HOUR_COLOR, cached_points + ((sHandLen + 1) * 2), hHandLen + 1, true, false);
draw_and_erase_cached_line(center, center, nmx, nmy, MINUTE_COLOR, cached_points + ((sHandLen + 1 + hHandLen + 1) * 2), mHandLen + 1, true, true);
gfx->endWrite();
}
int32_t slider_value = lv_slider_get_value(ui_Slider1);
int32_t brightness = map(slider_value, 0, 100, 5, 255);
gfx->Display_Brightness(brightness);
-将开发板接入电脑

![]() | ![]() |
|---|


本章节包含以下内容,请按需阅读:
以下环境设置适用于 Windows 10/11 系统,Mac/Linux 用户请参考 官方说明
下载并安装 Visual Studio Code。
在 VS Code 中,通过点击 VS Code 侧边活动栏中的 或使用快捷键(Ctrl+Shift+X)来打开 扩展 视图。然后,搜索 ESP-IDF 扩展并安装。

安装扩展后,VS Code 左侧活动栏中会出现 图标,点击该图标可查看 ESP-IDF 扩展的基本命令列表,在 Advanced 中选择 配置 ESP-IDF 扩展。

选择 Express 进入快速配置模式:

根据需要修改以下选项。

点击 Install 开始安装。你将看到一个显示安装进度的页面,包括 ESP-IDF 下载、ESP-IDF 工具下载安装以及 Python 虚拟环境创建的进度状态。

如果安装正确,你会看到所有设置已配置完成的提示,即可开始使用该扩展程序。

注意:如果 ESP-IDF 安装失败或需要重新安装,可以尝试删除 C:\Users\%Username%\esp 和 C:\Users\%Username%\.espressif 文件夹后重试。
ESP-IDF 示例程序位于 示例程序包 的 ESP-IDF 目录中。
| 示例程序 | 基础例程说明 |
|---|---|
| 01_AXP2101 | 通过移植后的 XPowersLib 驱动 AXP2101 获取电源相关数据 |
| 02_PCF85063 | 驱动 pcf85063 进行时间存储读取功能 |
| 03_esp-brookesia | 展示完整手机风格 UI 系统,包含状态栏、导航栏、应用启动器和手势交互等组件 |
| 03_QMI8658 | 通过移植后的 SensorLib 驱动 qmi8658 获取陀螺仪相关数据 |
| 05_LVGL_WITH_RAM | 通过开启双缓存、开启 DMA 加速防撕裂等方式运行 LVGL 的 demo |


![]() |
|---|

周一-周五(9:30-6:30)周六(9:30-5:30)
手机:13434470212
邮箱:services04@spotpear.cn
QQ:202004841
