GxEPD2库完全指南:从入门到精通的Arduino电子纸显示开发手册

【免费下载链接】GxEPD2 Arduino Display Library for SPI E-Paper Displays 【免费下载链接】GxEPD2 项目地址: https://gitcode.com/gh_mirrors/gx/GxEPD2

GxEPD2是一款专为Arduino平台设计的SPI电子纸显示库,支持多种黑白、三色及七色电子纸屏幕,提供简单易用的API接口,让开发者能够快速实现低功耗、高对比度的显示应用。无论你是电子纸显示开发新手还是有经验的开发者,本指南都将帮助你全面掌握GxEPD2库的使用方法,轻松打造各类电子纸显示项目。

为什么选择GxEPD2库?

电子纸显示技术以其超低功耗、类纸质视觉效果和阳光下可读性强等特点,在物联网设备、电子价签、智能穿戴等领域得到广泛应用。GxEPD2库作为一款功能全面的Arduino电子纸显示库,具有以下优势:

  • 广泛的硬件支持:兼容多款来自大连佳显(Good Display)和 Waveshare 的电子纸屏幕,包括黑白、三色(黑/白/红)和七色显示面板。
  • 简单易用的API:基于Adafruit_GFX图形库,提供直观的绘图函数,如点、线、矩形、文本显示等。
  • 低功耗优化:支持多种刷新模式,可根据应用需求选择局部刷新或全刷新,最大限度降低功耗。
  • 丰富的示例代码:提供多个示例项目,涵盖基础显示、图片显示、WiFi连接等功能,帮助开发者快速上手。

支持的电子纸显示屏型号

GxEPD2库支持多种尺寸和类型的电子纸显示屏,以下是部分主要支持型号:

  • 黑白屏:1.02英寸(GDEW0102T4)、1.54英寸(GDEP015OC1)、2.13英寸(GDE0213B1)、2.9英寸(GDEH029A1)、4.2英寸(GDEW042T2)、7.5英寸(GDEW075T8)等。
  • 三色屏:1.54英寸(GDEW0154Z04)、2.13英寸(GDEW0213Z16)、2.9英寸(GDEW029Z10)、4.2英寸(GDEW042Z15)、7.5英寸(GDEW075Z09)等,支持黑、白、红三色显示。
  • 四色屏:如GDEY0213F51(2.13英寸)、GDEY029F51H(2.9英寸)等,支持黑、白、红、黄四色显示。
  • 七色屏:如ACeP565(5.65英寸)、ACeP730(7.30英寸)等,支持更多色彩显示。

你可以在src/GxEPD2.h文件中查看完整的支持型号列表。

快速开始:GxEPD2库的安装与配置

安装GxEPD2库

  1. 通过Arduino Library Manager安装: 打开Arduino IDE,依次点击「工具」→「管理库...」,在搜索框中输入「GxEPD2」,找到库并点击「安装」。

  2. 手动安装: 从仓库克隆代码:git clone https://gitcode.com/gh_mirrors/gx/GxEPD2,将下载的库文件夹复制到Arduino的libraries目录下。

硬件连接

电子纸显示屏通常需要以下引脚连接到Arduino:

  • VCC:3.3V(注意:电子纸屏通常需要3.3V供电,请勿连接5V)
  • GND:接地
  • SCK:SPI时钟引脚(如Arduino UNO的D13)
  • MOSI:SPI数据发送引脚(如Arduino UNO的D11)
  • CS:片选引脚(可自定义,如D10)
  • DC:数据/命令控制引脚(可自定义,如D9)
  • RST:复位引脚(可自定义,如D8)
  • BUSY:忙状态引脚(可自定义,如D7)

具体的引脚定义可参考库中的examples/GxEPD2_Example/GxEPD2_wiring_examples.h文件,里面包含了针对不同开发板和显示屏的接线示例。

基础示例:Hello World显示

下面是一个简单的GxEPD2库使用示例,实现在电子纸上显示"Hello World!":

#include <GxEPD2_BW.h>
#include <Fonts/FreeMonoBold9pt7b.h>

// 定义显示屏型号和引脚
GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=*/10, /*DC=*/9, /*RST=*/8, /*BUSY=*/7));

void setup() {
  display.init(); // 初始化显示屏
  display.setRotation(1); // 设置旋转角度
  display.setFont(&FreeMonoBold9pt7b); // 设置字体
  display.setTextColor(GxEPD_BLACK); // 设置文本颜色
  display.fillScreen(GxEPD_WHITE); // 清屏为白色
  display.setCursor(10, 50); // 设置光标位置
  display.print("Hello World!"); // 显示文本
  display.update(); // 更新显示
}

void loop() {
  // 电子纸显示无需循环刷新,这里为空
}

这个示例使用了2.9英寸黑白电子纸屏(GxEPD2_290_T5),你可以根据自己的屏幕型号修改相应的类和参数。

高级应用:显示图片与图形

GxEPD2库不仅支持文本显示,还可以显示位图图片和绘制各种图形。以下是一些常见的高级应用场景:

显示位图图片

GxEPD2库支持从SD卡或程序内存中读取位图图片并显示。例如,使用examples/GxEPD2_SD_Example示例,可以从SD卡读取BMP格式图片并显示在电子纸上。

电子纸显示彩色鹦鹉图片 使用GxEPD2库在电子纸上显示彩色鹦鹉图片,图片来源:extras/bitmaps/displayed_bmp_large.bmp

绘制图形

利用Adafruit_GFX库提供的绘图函数,可以轻松绘制各种图形:

// 绘制矩形
display.drawRect(10, 10, 100, 50, GxEPD_BLACK);
// 填充矩形
display.fillRect(120, 10, 100, 50, GxEPD_BLACK);
// 绘制圆形
display.drawCircle(60, 100, 40, GxEPD_BLACK);
// 填充圆形
display.fillCircle(180, 100, 40, GxEPD_BLACK);
// 绘制线条
display.drawLine(10, 150, 230, 150, GxEPD_BLACK);

局部刷新

电子纸显示屏的全刷新过程较慢且耗电,GxEPD2库支持局部刷新功能,只更新屏幕的部分区域,提高刷新速度并降低功耗:

// 局部刷新指定区域
display.setPartialWindow(0, 0, 200, 100); // 设置局部窗口
display.fillScreen(GxEPD_WHITE); // 清除局部区域
display.setCursor(10, 50);
display.print("Partial Update");
display.displayWindow(); // 更新局部窗口

实际项目案例:电子纸天气预报显示

利用GxEPD2库结合WiFi模块,可以实现一个实时显示天气预报的电子纸设备。以下是项目的主要功能:

  • 连接WiFi获取天气数据
  • 在电子纸上显示当前温度、湿度、天气状况
  • 显示未来几天的天气预报

电子纸天气预报显示界面 电子纸天气预报显示界面,图片来源:extras/bitmaps/z0gs/screenshot.bmp

相关的示例代码可以参考examples/GxEPD2_WiFi_Example,该示例展示了如何通过WiFi获取数据并在电子纸上显示。

常见问题与解决方案

问题1:显示屏无反应或显示乱码

可能原因

  • 电源电压不足或不稳定(电子纸屏需要稳定的3.3V供电)
  • 引脚连接错误
  • 显示屏型号选择错误

解决方案

问题2:刷新速度慢

可能原因

  • 使用了全刷新模式
  • 显示内容复杂

解决方案

  • 对于需要频繁更新的内容,使用局部刷新功能
  • 减少每次刷新的内容量

问题3:显示对比度低或有残影

可能原因

  • 刷新次数不足
  • 驱动参数设置不当

解决方案

  • 尝试增加全刷新的频率
  • 检查显示屏的数据手册,调整驱动参数

总结

GxEPD2库为Arduino开发者提供了一个功能强大、易于使用的电子纸显示解决方案。通过本指南,你已经了解了GxEPD2库的基本安装、配置和使用方法,以及一些高级应用技巧。无论是简单的文本显示还是复杂的图形界面,GxEPD2库都能满足你的需求。

如果你想深入学习GxEPD2库的更多功能,可以参考库中的示例代码和源代码,也可以参与项目的开发和贡献。祝你在电子纸显示开发的道路上取得成功!

【免费下载链接】GxEPD2 Arduino Display Library for SPI E-Paper Displays 【免费下载链接】GxEPD2 项目地址: https://gitcode.com/gh_mirrors/gx/GxEPD2

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐