ESP32 PlatformIO 使用 GxEPD2驱动 Hink-E042-A0 4.2 寸三色墨水屏

0. 前言

咸鱼淘了块4.2寸的三色墨水屏,效果不错,但是没直接找到适配的库,搁置了一段时间。

后来在测试2.13寸三色墨水屏的时候,还是找到了可以直接用的库。

GxEPD2库经过些许改装,还是可以直接用的

**墨水屏IC:Hink-E042-A0
主控:ESP32-C3

在这里插入图片描述

如上图所示,没用什么有用的信息,甚至AI都觉得这是一款2.13寸的墨水屏。

1. 工程配置

工程创建过程已经写过,在此不多赘述PlatformIO中ESP8266使用GxEPD库和U8G2库驱动 2.9寸黑白墨水屏显示中文注意!!!这次安装的库是GxEPD2而非GxEPD

将platformio.ini文件全部换成以下内容,可以确保完成后续操作。你也可以换成你的其他开发板。
platformio.ini

[env:esp32-c3-devkitm-1]
platform = espressif32
board = esp32-c3-devkitm-1
framework = arduino
monitor_speed = 115200
board_build.flash_mode = dio
lib_deps = 
    zinggjm/GxEPD2@^1.5.0
	olikraus/U8g2_for_Adafruit_GFX@^1.8.0
build_flags =
    -D ARDUINO_USB_MODE=1
    -D ARDUINO_USB_CDC_ON_BOOT=1

2. 修改GxEPD2库

经过我的测试,如果直接使用以下代码进行初始化,可以初始化一部分屏幕,也就是2.13寸的位置,可以清楚的看到,GxEPD2_213_Z98c 这个名字是一个2.13寸的墨水屏。

你也可以用下面的代码进行初始化,不过记得要修改引脚。如果你的默认SPI引脚被占用,要创建新的SPI类来初始化。

#include <GxEPD2_3C.h>

GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c  (SS, 10, 3, 2));

打开工程目录下的这个文件,这个可以直接驱动,但是只会刷新一部分。

Epaper_Demo9\.pio\libdeps\esp32-c3-devkitm-1\GxEPD2\src\epd3c\GxEPD2_213_Z98c.h

现在来修改,让它能刷新更多内容。将这个类中的变量值修改成与我相同,这个将直接影响到屏幕的大小:

在这里插入图片描述
现在上传上去,会发现有一块区域无法刷新,这个是初始化命令的参数不对造成的
SSD1683芯片驱动手册

在第42页,可以看到设别初始化的过程:

    1. 硬件复位,等待至少10ms等待硬件复位完成。
    1. 软件复位,发送命令 0x12 进行复位,然后等待至少10ms,等待复位完成。
    1. 发送初始化命令,这个待会细讲
    1. 加载波形 LUT
    1. 写入图像和驱动器显示面板;
    1. 深度睡眠模式,这个不用管,咱们用不到。
      在这里插入图片描述

现在打开 GxEPD2_213_Z98c.cpp,查看命令表

  • 0x01 :控制行数。
  • 0x11 :设置显示器方向。
  • 0x3C :设置边界颜色 0x01黑 0x00白色。
  • 0x18 :VCOM、温度相关 一般写入0x00或者0x80。
  • 0x44 :RAMx设置命令,接下来的两个字节的数据是x的起始位置和终点位置。
  • 0x45 :RAMy设置命令,接下来的四个字节的数据是y的其实位置和终点位置,但由于y是向下计数,所以有四个字节。
  • 0x4E :RAMx设置命令,接下来的一个字节是RAMx的计数初值。
  • 0x4F :RAMy设置命令,接下来的两个字节是RAMy的计数初值和计数终值。

找到下面这个代码,替换以下内容:

  _writeCommand(0x01); //Driver output control
  _writeData(0xF9);
  _writeData(0x00);
  _writeData(0x00);

更改为:

  _writeCommand(0x01); //Driver output control 控制行数
  _writeData(0x2B);
  _writeData(0x01);
  _writeData(0x00);

注意!!!不要全换
在这里插入图片描述

3. 使用效果

使用效果如下,看多了黑白墨水屏,感觉红色还不错:
在这里插入图片描述

ESP32-C3是一款基于RISC-V架构的微控制器,它具有强大的处理能力、丰富的外设以及低功耗的特点。当你使用一块1.5英电子墨水(E-Paper Display)连接到ESP32-C3时,通常会涉及幕初始化、数据传输和图像显示等操作。 为了帮助解决关于该硬件组合的具体代码问题,请参考以下步骤: ### 初步设置 #### 1. 安装驱动库 首先需要选择适合您墨水型号的驱动库,并将其添加到您的Arduino IDE或其他开发环境中。例如常见的GDEH0154D67(1.54黑白红三色显示),可以搜索对应的第三方支持库如`ZinggJM/GxEPD2`来完成安装。 #### 示例代码片段 - 初始化并绘制简单文本 ```cpp #include <SPI.h> #include "GxEPD2_154_D67.h" // 根据实际使用幕调整头文件名 #define DC_PIN 33 // SPI 数据/命令控制针脚分配给GPIO33 (具体视板子而定) #define CS_PIN 5 // 片选信号针脚分配给GPIO5 #define RST_PIN 18 // 复位信号针脚分配给GPIO18 #define BUSY_PIN 4 // 忙碌状态监测针脚分配给GPIO4 // 创建 GxEPD2 对象实例 GxEPD2_154_D67 display(CS_PIN, DC_PIN, RST_PIN, BUSY_PIN); void setup() { Serial.begin(9600); if (!display.init()) { Serial.println("ePaper init failed"); while(true); // 如果失败则无限循环等待排查错误原因 } } void loop(){ display.firstPage(); // 开始新的一帧页面更新过程 do{ // 使用 drawString 或其他图形函数填充内容至缓冲区 display.drawBitmap(xOffset, yOffset, yourImageArray, widthInPixels, heightInPixels,GxEPD_BLACK ); }while(display.nextPage()); } ``` 上述示例仅作为基础入门指南,在实际项目中可能还需要考虑电源管理、刷新频率优化等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IoT_H2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值