Merge pull request #6 from HalfSweetStudio/test

增加了三色屏显示第三种颜色的例程
This commit is contained in:
HalfSweet
2022-04-20 15:49:52 +08:00
committed by GitHub
11 changed files with 94 additions and 2 deletions

View File

@@ -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 <Arduino.h>
#include <EPaperDrive.h>
//包含你需要使用的文件系统,例如:
#include <LittleFS.h>
#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); //防止看门狗咬
}

View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -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);
}