Eink墨水屏驱动开发:操作库的核心功能解析

面对多样化的Eink墨水屏型号与控制器,选择合适的数据操作库是项目成功的关键。一个优秀的操作库不仅提供跨平台支持,还需兼顾刷新速度、内存占用与兼容性。本文将从实际开发角度出发,探讨如何评估与集成Eink操作库,构建稳定高效的显示系统。

一、概述

eink墨水屏操作库是LuatOS的电子墨水屏驱动库,支持微雪电子多种尺寸和型号的黑白电子墨水屏;

eink 库提供了如下几大类功能:

1、墨水屏初始化配置:支持多种型号的墨水屏初始化;

2、基本图形绘制:直线、圆、矩形、二维码等基本图形的绘制;

3、文本显示:支持中英文字体显示;

4、位图显示:支持 XBM 格式位图显示;

5、二维码生成:支持二维码生成和显示;

6、电池图标绘制:支持电池电量图标绘制;

注意事项:

1、墨水屏刷新速度较慢,不适合频繁更新的场景;

2、eink 初始化之前需要先初始化 SPI;

3、显示中文字体前,需要先使用 eink.setFont(font)接口进行设置,

4、目前大部分型号都只支持 eink.font_opposansm12 中文 12 号字体,

5、通过 eink.print(x, y, str, color)接口显示字符串,不管中文还是英文,

显示内容均以设置的坐标参数作为左下角进行显示;

6、未开启异步刷新 eink.async(1)的情况下,使用 eink.show()刷新缓冲区内容到屏幕,

需要等待刷新完代码才会往下执行。开启异步刷新eink.async(1)的情况下,

使用eink.show()屏幕刷新的同时代码也会往下执行;

7、部分屏幕使用 eink.clear(color, true)清除缓冲区和 eink.show(x, y, true)显示缓冲区内容这 2 个接口时,

屏幕都会执行清屏,可以只使用eink.show(x, y, true)接口就能实现清屏+显示的效果;

支持功能演示
image

二、核心示例

1、核心示例是指:使用本库文件提供的核心 API,开发的基础业务逻辑的演示代码;

2、核心示例的作用是:帮助开发者快速理解如何使用本库,所以核心示例的逻辑都比较简单;

2.1 核心代码

image

2.2核心代码演示效果

image

三、常量详解

核心库常量,顾名思义是由 LuatOS 内核固件中定义的、不可重新赋值或修改的固定值,在脚本代码中不需要声明,可直接调用,包含以下常量;

3.1 屏幕型号常量

屏幕型号常量都是对应的微雪的屏幕型号

3.1.1 黑白屏幕常量分类汇总

image

3.1.2 屏幕常量解释

3.1.2.1 eink.MODEL_1in02d

image

3.1.2.2 eink.MODEL_1in54

image

3.1.2.3 eink.MODEL_1in54_V2

image

3.1.2.4 eink.MODEL_1in54b

image

3.1.2.5 eink.MODEL_1in54b_V2

image

3.1.2.6 eink.MODEL_1in54_V3

image

3.1.2.7 eink.MODEL_1in54c

image

3.1.2.8 eink.MODEL_1in54r

image

3.1.2.9 eink.MODEL_2in13

image

3.1.2.10 eink.MODEL_2in13bc

image

3.1.2.11 eink.MODEL_2in13d

image

3.1.2.12 eink.MODEL_2in13_V2

image

3.1.2.13 eink.2in13b_V3

image

3.1.2.14 eink.MODEL_2in66

image

3.1.2.15 eink.MODEL_2in66b

image

3.1.2.16 eink.MODEL_2in7

image

3.1.2.17 eink.MODEL_2in7b

image

3.1.2.18 eink.MODEL_2in9

image

3.1.2.19 eink.MODEL_2in9_V2

image

3.1.2.20 eink.MODEL_2in9bc

image

3.1.2.21 eink.MODEL_2in9b_V3

image

3.1.2.22 eink.MODEL_2in9d

image

3.1.2.23 eink.MODEL_3in52

image

3.1.2.24 eink.MODEL_3in7

image

3.1.2.25 eink.MODEL_3in7_U

image

3.1.2.26 eink.MODEL_4in2

image

3.1.2.27 eink.MODEL_4in2_V2

image

3.1.2.28 eink.MODEL_4in2bc

image

3.1.2.29 eink.MODEL_4in2b_V2

image

3.1.2.30 eink.MODEL_5in65f

image

3.1.2.31 eink.MODEL_5in83

image

3.1.2.32 eink.MODEL_5in83bc

image

3.1.2.33 eink.MODEL_5in83_V2

image

3.1.2.34 eink.MODEL_5in83b_V2

image

3.1.2.35 eink.MODEL_7in5

image

3.1.2.36 eink.MODEL_7in5_HD

image

3.1.2.37 eink.MODEL_7in5_V2

image

3.1.2.38 eink.MODEL_7in5bc

image

3.1.2.39 eink.MODEL_7in5b_HD

image

3.1.2.40 eink.MODEL_7in5b_V2

image

3.2 字体常量

3.2.1 eink.font_opposansm12

image

3.2.2 eink.font_opposansm16

image

3.2.3 eink.font_opposansm18

image

3.2.4 eink.font_opposansm20

image

3.2.5 eink.font_opposansm22

image

3.2.6 eink.font_opposansm24

image

3.2.7 eink.font_opposansm32

image

3.2.8 eink.font_opposansm12_chinese

image

3.2.9 eink.font_opposansm14_chinese

image

3.2.10 eink.font_opposansm16_chinese

image

3.2.11 eink.font_opposansm18_chinese

image

3.2.12 eink.font_opposansm20_chinese

image

3.2.13 eink.font_opposansm22_chinese

image

3.2.14 eink.font_opposansm24_chinese

image

3.2.15 eink.font_opposansm32_chinese

image

四、 函数详解

4.1 初始化函数详解

4.1.1 eink.init(driver_ic, param, spi_device)

功能

eink 显示屏初始化(新接口),支持初始化时一次性设置屏幕型号,推荐使用此方式;

注意事项

初始化前必须使用 SPI 对象的方式进行 SPI 接口初始化,且 spi_id 、pin_cs 一定要按实际接线填对应引脚的 GPIO 号,否则会无显示;

在使用任何 eink 绘图功能前,必须先调用此函数初始化显示屏,且 pin_dc 、pin_busy 、pin_reset 一定要按实际接线填对应引脚的 GPIO 号,否则会无显示;

参数

driver_ic
image

param
image

spi_device
image

返回值

local result = eink.init(tp, param, spi_device)

result
image

示例
image

4.1.2 eink.setup(mode , spiid, pin_busy, pin_reset, pin_dc, pin_cs)

功能

eink 显示屏初始化(老接口),老接口不支持初始化时一次性设置屏幕型号,次选使用;

参数

mode
image

spiid
image

pin_busy
image

pin_reset
image

pin_dc
image

pin_cs
image

返回值

local result = eink.setup(full, spiid, pin_busy, pin_reset, pin_dc, pin_cs)

result
image

示例
image

4.2 屏幕控制函数详解

4.2.1 eink.sleep()

功能

进入休眠模式,休眠后需要重新初始化才能使用,显示字体需要重新使用 eink.setFont(font)设置后再使用;

参数

返回值

示例
image

4.2.2 eink.clear(color, force)

功能

清除绘图缓冲区;

注意事项

如果执行 eink.clear(color, force)接口屏幕会进行多次清屏,可以使用将 force 参数填 true;

参数

color
image

force
image

返回值

示例
image

4.2.3 eink.setWin(width, height, rotate)

功能

设置显示窗口像素高度、像素宽度和显示方向;

参数

width
image

height
image

rotate
image

返回值

示例
image

4.2.4 eink.getWin()

功能

获取窗口信息;

参数

返回值

local width, height, rotate = eink.getWin()

width
image

height
image

rotate
image

示例
image

4.2.5 eink.model(m)

功能

设置墨水屏驱动型号;

注意事项

用于动态切换墨水屏型号;

参数

m
image

返回值

示例
image

4.3 文本显示函数详解

4.3.1 eink.setFont(font)

功能

设置后续使用的字体;

注意事项

设置后会影响后续所有文本绘制操作;

参数

font
image

返回值

示例
image

4.3.2 eink.print(x, y, str, color)

功能

在指定位置绘制文本;

注意事项

需要在设置字体后调用;

参数

x
image

y
image

str
image

color
image

返回值

示例
image

4.4 基本图形绘制函数详解

4.4.1 eink.line(x, y, x2, y2, color)

功能

绘制直线,不能绘制斜线;

注意事项

在缓冲区中绘制直线;

参数

x
image

y
image

x2
image

y2
image

color
image

返回值

示例
image

4.4.2 eink.rect(x, y, x2, y2, color, fill)

功能

绘制矩形;

注意事项

可以绘制空心或实心矩形;

参数

x
image

y
image

x2
image

y2
image

color
image

fill
image

返回值

示例
image

4.4.3 eink.circle(x, y, radius, color, fill)

功能

绘制圆形;

注意事项

可以绘制空心或实心圆形;

参数

x
image

y
image

radius
image

color
image

fill
image

返回值

示例
image

4.5 高级功能函数详解

4.5.1 eink.show(x, y, noClear)

功能

将缓冲区图像输出到屏幕;

注意事项

所有绘图操作都是在缓冲区中进行,需要调用此函数才能显示;

如果执行 eink.show(x, y, false) 接口屏幕会进行多次清屏,可以使用将 noClear 参数填 true;

如果执行 eink.show(x, y, true) 接口屏幕会进行清屏,可以省略使用 eink.clear(color, force)接口;

参数

x
image

y
image

noClear
image

返回值

示例
image

4.5.2 eink.qrcode(x, y, str, size)

功能

绘制二维码;

注意事项

二维码大小会根据内容和纠错等级自动调整;

参数

x
image

y
image

str
image

size
image

返回值

示例
image

4.5.3 eink.bat(x, y, bat)

功能

绘制电池图标;

注意事项

根据电池电压绘制电量图标;

参数

x
image

y
image

bat
image

返回值

示例
image

4.5.4 eink.drawXbm(x, y, w, h, data)

功能

绘制 XBM 格式位图;

注意事项

XBM 是单色位图格式,每个 bit 位表示一个像素;

参数

x
image

y
image

w
image

h
image

data
image

返回值

示例
image

4.5.5 eink.async(index)

功能

启用异步刷新模式,启用后使用 eink.clear(color, force)和 eink.show(x, y, noClear)2 个接口,无需等待接口执行完毕也会执行之后的代码。在异步模式下可以使用 eink.clear().wait()和 eink.show().wait()实现同步模式的效果。

注意事项

1、异步模式下执行 eink.clear().wait() 接口,等价于同步模式下执行 eink.clear(color, false)接口

2、异步模式下执行 eink.show().wait()接口,等价于同步模式下执行 eink.show(0, 0, false) 接口

参数

index
image

返回值

示例

image

4.5.6 eink.weather_icon(x, y, code)

功能

根据天气代码绘制天气图标;

参数

X
image

Y
image

Code
image

返回值

示例
image

五、模组支持说明

1、软件是否支持,可以查看手册中 LuatOS 固件 章节对应型号是否支持 eink 核心库。

2、大部分 API 都只能在 eink.init(tp, param, spi_device)初始化成功后使用

今天的内容就分享到这里了~

posted @ 2026-02-11 15:27  合宙LuatOS  阅读(15)  评论(0)    收藏  举报