编写墨水屏micropython板本的驱动时,需要对墨水屏进行旋转显示,由于墨水屏本身没有旋转功能,因此需要对显存进行旋转操作。
代码如下:
def byteArrRotate(frbByteArr,scrByteArr,EPD_WIDTH,EPD_HEIGHT):
'''
frbByteArr为旋转后的虚拟屏幕显存,用frameBuff直接操作的
scrByteArr为真实屏幕显存,直接写入屏幕的
EPD_WIDTH和EPD_HEIGHT是真实屏幕显存对应的矩阵大小,虚拟屏幕的该两个值要调换
本段程序实现单色显示屏内容的90度旋转,显示屏定义如下:
---- WIDTH----
| byte0-> |
| |
| |
HEIGHT |
| |
| |
| |
-----------------
不旋转模式下,定义直接用于显示的缓存scrByteArr.显示规则是从第0字节开始,第一行第一列对应byte0的bit7-bit0,高位在前.
显示缓存scrByteArr的大小为width/8*height
如果不旋转,直接定义frameBuff,对scrByteArr进行操作即可,如:
frb_black=framebuf.FrameBuffer(scrByteArr,EPD_WIDTH,EPD_HEIGHT,framebuf.MONO_HLSB)
但要实现旋转显示,就必须定义一块虚拟的屏幕,把WIDTH和HEIGHT对调,
并定义一块显存frbByteArr,与虚拟的屏幕对应,大小为HEIGHT/8*WIDTH
然后再定

文章详细介绍了如何在墨水屏上实现90度旋转显示,由于硬件本身不支持旋转,需要通过软件方法对显存进行旋转操作。通过定义虚拟屏幕和显存,以及使用特定的byteArrRotate函数,将旋转后的虚拟屏幕内容拷贝到真实屏幕的显存中,从而达到旋转显示的效果。在ESP32平台上,结合framebuf库,实现了旋转显示的功能。
最低0.47元/天 解锁文章
1426

被折叠的 条评论
为什么被折叠?



