mirror of
https://github.com/HalfSweetStudio/EPaperDrive.git
synced 2026-01-26 00:42:20 +08:00
86
examples/ThreeColor/ThreeColor.ino
Normal file
86
examples/ThreeColor/ThreeColor.ino
Normal 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); //防止看门狗咬
|
||||
}
|
||||
0
examples/ThreeColor/data/ThreeColor.ino
Normal file
0
examples/ThreeColor/data/ThreeColor.ino
Normal file
BIN
examples/ThreeColor/data/font10
Normal file
BIN
examples/ThreeColor/data/font10
Normal file
Binary file not shown.
BIN
examples/ThreeColor/data/font12
Normal file
BIN
examples/ThreeColor/data/font12
Normal file
Binary file not shown.
BIN
examples/ThreeColor/data/font32
Normal file
BIN
examples/ThreeColor/data/font32
Normal file
Binary file not shown.
BIN
examples/ThreeColor/data/font60
Normal file
BIN
examples/ThreeColor/data/font60
Normal file
Binary file not shown.
BIN
examples/ThreeColor/data/font70
Normal file
BIN
examples/ThreeColor/data/font70
Normal file
Binary file not shown.
BIN
examples/ThreeColor/data/weathericon32
Normal file
BIN
examples/ThreeColor/data/weathericon32
Normal file
Binary file not shown.
BIN
examples/ThreeColor/data/weathericon50
Normal file
BIN
examples/ThreeColor/data/weathericon50
Normal file
Binary file not shown.
BIN
examples/ThreeColor/data/weathericon80
Normal file
BIN
examples/ThreeColor/data/weathericon80
Normal file
Binary file not shown.
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user