diff --git a/examples/ThreeColor/ThreeColor.ino b/examples/ThreeColor/ThreeColor.ino new file mode 100644 index 0000000..6969936 --- /dev/null +++ b/examples/ThreeColor/ThreeColor.ino @@ -0,0 +1,86 @@ +/** + * @file HelloWorld.ino + * @author HalfSweet (Email:HalfSweet@HalfSweet.cn or QQ:2522182733) + * @brief 该文件为支持三色的墨水屏显示出三种颜色的例程 + * @version 0.1 + * @date 2022-04-20 + * + * @copyright Copyright (c) 2022 + * + */ +#include +#include +//包含你需要使用的文件系统,例如: +#include + +#define BAUD_SPEED 74880 //串口调试的波特率,可自行修改 + +#define CS 15 +#define RST 2 +#define DC 0 +#define BUSY 4 +#define CLK 14 +#define DIN 13 +EPaperDrive EPD(0, CS, RST, DC, BUSY, CLK, DIN); //驱动库的实例化,此处为使用软件SPI + +const uint8_t city_icon[24] = { + /* 0X01,0X01,0X0C,0X00,0X0C,0X00, */ + 0X00, + 0X00, + 0X1C, + 0X00, + 0X77, + 0X00, + 0X41, + 0X80, + 0X9C, + 0X60, + 0XA2, + 0X30, + 0XA2, + 0X30, + 0X9C, + 0XC0, + 0X41, + 0X80, + 0X77, + 0X00, + 0X1C, + 0X00, + 0X00, + 0X00, +}; + +void setup() +{ + Serial.begin(BAUD_SPEED); + LittleFS.begin(); //请务必先手动初始化一遍文件系统再将指针传入 + EPD.SetFS(&LittleFS); //设置存放字体的文件系统,传入的为该文件系统的操作指针,可自行修改 + + EPD.EPD_Set_Model(DKE42_3COLOR); //设置屏幕类型,具体型号可以参考文档 + EPD.EPD_init_Full(); //全刷初始化,使用全刷波形 + EPD.clearbuffer(); //清空缓存(全白) + EPD.fontscale = 2; //字体缩放系数(支持1和2,对图片也有效,用完记得重新改成1) + EPD.SetFont(FONT12); //选择字体,具体支持的字体见文档 + EPD.DrawUTF(0, 0, "Hello World"); //绘制字符串 + EPD.DrawUTF(26, 0, "我喜欢墨水屏"); //绘制字符串 + EPD.fontscale = 1; //字体缩放系数改回1 + EPD.DrawXbm_P(100, 0, 12, 12, (uint8_t *)city_icon); //绘制图片 + EPD.EPD_Transfer_Full_BW((unsigned char *)EPD.EPDbuffer, 1); //将黑白图像传入缓存 + EPD.clearbuffer(); + EPD.fontscale = 2; + EPD.DrawUTF(40, 0, "现在是红色"); + EPD.fontscale = 1; + EPD.DrawXbm_P(100, 30, 12, 12, (uint8_t *)city_icon); //绘制图片 + EPD.EPD_Transfer_Full_RED((unsigned char *)EPD.EPDbuffer,1); + Serial.printf("缓存图像绘制完毕,准备全刷 \n"); + EPD.EPD_Update(); + EPD.ReadBusy_long();//等待屏幕刷新完成后才继续往下运行 + EPD.deepsleep(); //让屏幕进入休眠模式 + Serial.println("全刷完毕"); +} + +void loop() +{ + delay(1); //防止看门狗咬 +} diff --git a/examples/ThreeColor/data/ThreeColor.ino b/examples/ThreeColor/data/ThreeColor.ino new file mode 100644 index 0000000..e69de29 diff --git a/examples/ThreeColor/data/font10 b/examples/ThreeColor/data/font10 new file mode 100644 index 0000000..2bb3235 Binary files /dev/null and b/examples/ThreeColor/data/font10 differ diff --git a/examples/ThreeColor/data/font12 b/examples/ThreeColor/data/font12 new file mode 100644 index 0000000..6a6d468 Binary files /dev/null and b/examples/ThreeColor/data/font12 differ diff --git a/examples/ThreeColor/data/font32 b/examples/ThreeColor/data/font32 new file mode 100644 index 0000000..c8d2aee Binary files /dev/null and b/examples/ThreeColor/data/font32 differ diff --git a/examples/ThreeColor/data/font60 b/examples/ThreeColor/data/font60 new file mode 100644 index 0000000..7d290c5 Binary files /dev/null and b/examples/ThreeColor/data/font60 differ diff --git a/examples/ThreeColor/data/font70 b/examples/ThreeColor/data/font70 new file mode 100644 index 0000000..3eb133c Binary files /dev/null and b/examples/ThreeColor/data/font70 differ diff --git a/examples/ThreeColor/data/weathericon32 b/examples/ThreeColor/data/weathericon32 new file mode 100644 index 0000000..3af8f33 Binary files /dev/null and b/examples/ThreeColor/data/weathericon32 differ diff --git a/examples/ThreeColor/data/weathericon50 b/examples/ThreeColor/data/weathericon50 new file mode 100644 index 0000000..4ea2b70 Binary files /dev/null and b/examples/ThreeColor/data/weathericon50 differ diff --git a/examples/ThreeColor/data/weathericon80 b/examples/ThreeColor/data/weathericon80 new file mode 100644 index 0000000..4d6251d Binary files /dev/null and b/examples/ThreeColor/data/weathericon80 differ diff --git a/src/EPaperDrive.cpp b/src/EPaperDrive.cpp index e9b55ba..7882c5f 100644 --- a/src/EPaperDrive.cpp +++ b/src/EPaperDrive.cpp @@ -663,10 +663,11 @@ void EPaperDrive::DrawUnicodeChar(int16_t x, int16_t y, uint8_t width, uint8_t h else sizeofsinglechar = (height / 8 + 1) * width; offset = (code[0] * 0x100 + code[1]) * sizeofsinglechar; + Serial.printf("offset:%d",offset); // Serial.println("code[1]"); // Serial.println(code[1]); - // Serial.println("sizeofsinglechar"); - // Serial.println(sizeofsinglechar); + //Serial.println("sizeofsinglechar"); + //Serial.println(sizeofsinglechar); // File f = UserFS->open(fontname, "r"); File f = UserFS->open(fontname, "r"); f.seek(offset, SeekSet); @@ -2547,6 +2548,11 @@ void EPaperDrive::EPD_Dis_Part(int xStart, int xEnd, int yStart, int yEnd, uint8 { EPD_WriteDispRam(Xsize, Ysize, (uint8_t *)DisBuffer, offset, 1); } + else if(EPD_Type == WX29) + { + EPD_SetRamPointer(xStart / 8, yEnd % 256, yEnd / 256); + EPD_WriteDispRam(Xsize, Ysize, (uint8_t *)DisBuffer, offset, 1); + } // EPD_WriteDispRam_Old(Xsize, Ysize,(uint8_t *)DisBuffer,offset,1); }