前言 前几日逛淘宝发现一个1.54寸双色墨水屏,屏幕+驱动只要16,果断下单拿来玩玩 [第二天就涨价到了26了hhhhhhhhhhhc] 如果还有人感兴趣的话在这:某宝链接
arduino 接线 在微雪官网资料 找到接线图: 虽然和我的引脚名称不太一样,但是不影响理解和使用。
程序 当然也是在微雪官网下载的资料,注释都是英文而且一些有点问题,这里整理一下微雪资料下载链接 由于我的屏幕是1.54寸,所以在arduino
的epd1in54
文件夹内 主要需要改动的是epd1in54.ino
和imagedata.cpp
imagedata.cpp 这个文件要修改的是那个保存图片的数组。图片转换数组可以用微雪提供的工具:图片取模软件 打开后是这样: 首先修改图片尺寸,我的屏幕是200x200. 然后左上角打开,选择一张图片,修改参数后保存为c语言数组。 打开保存的数组文件可以看见: 用数组数据替换掉原来文件里的数据 需要注意的是复制的时候跳过数组第一行,从第二行开始复制,否则最后显示的图片会发生偏移
epd1in54.ino 废话不多说直接上代码和注释:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 #include <SPI.h> #include "epd1in54.h" #include "epdpaint.h" #include "imagedata.h" #define COLORED 0 #define UNCOLORED 1 unsigned char image[1024 ];Paint paint (image, 0 , 0 ) ;Epd epd; void setup () { Serial.begin (115200 ); Serial.print ("e-Paper init " ); if (epd.Init (lut_full_update) != 0 ) { Serial.print ("e-Paper init failed" ); return ; } epd.ClearFrameMemory (0xFF ); epd.DisplayFrame (); epd.ClearFrameMemory (0xFF ); epd.DisplayFrame (); paint.SetRotate (ROTATE_0); paint.SetWidth (200 ); paint.SetHeight (24 ); paint.Clear (COLORED); paint.DrawStringAt (30 , 4 , "Hello world!" , &Font16, UNCOLORED); epd.SetFrameMemory (paint.GetImage (), 0 , 10 , paint.GetWidth (), paint.GetHeight ()); paint.Clear (UNCOLORED); paint.DrawStringAt (0 , 2 , "e-Paper Demo" , &Font24, COLORED); epd.SetFrameMemory (paint.GetImage (), 0 , 30 , paint.GetWidth (), paint.GetHeight ()); paint.SetWidth (64 ); paint.SetHeight (64 ); paint.Clear (UNCOLORED); paint.DrawRectangle (0 , 0 , 40 , 50 , COLORED); paint.DrawLine (0 , 0 , 40 , 50 , COLORED); paint.DrawLine (40 , 0 , 0 , 50 , COLORED); epd.SetFrameMemory (paint.GetImage (), 16 , 60 , paint.GetWidth (), paint.GetHeight ()); epd.DisplayFrame (); delay (8000 ); epd.SetFrameMemory (IMAGE_DATA); epd.DisplayFrame (); epd.SetFrameMemory (IMAGE_DATA); epd.DisplayFrame (); epd.Sleep (); } void loop () {}
这里我删掉了原来资料的画图部分,只保留了字符串显示,画图直接看微雪文档 就好 但是还有一个问题,资料中没有关于局部刷新的demo,只在文档里提到了局部刷新的初始化方式。这里暂时留坑。
树莓派