From c6a059111855385d27f23321d80b509179d6e3c1 Mon Sep 17 00:00:00 2001 From: SSYYL <1032789891@qq.com> Date: Mon, 10 Jan 2022 11:39:04 +0800 Subject: [PATCH 1/2] Fix function type errors --- Arduino/epd2in13d/epd2in13d.cpp | 4 +++- Arduino/epd2in13d/epd2in13d.h | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Arduino/epd2in13d/epd2in13d.cpp b/Arduino/epd2in13d/epd2in13d.cpp index 46d5f93..b27b19a 100644 --- a/Arduino/epd2in13d/epd2in13d.cpp +++ b/Arduino/epd2in13d/epd2in13d.cpp @@ -286,7 +286,7 @@ void Epd::TurnOnDisplay(void) function : Initialize the e-Paper register parameter: ******************************************************************************/ -void Epd::Init() +int Epd::Init() { /* this calls the peripheral hardware interface, see epdif */ if (IfInit() != 0) { @@ -323,6 +323,8 @@ void Epd::Init() SendCommand(0x82); //vcom_DC setting SendData(0x28); + + return 0; } void Epd::Clear(void) diff --git a/Arduino/epd2in13d/epd2in13d.h b/Arduino/epd2in13d/epd2in13d.h index 0b844c6..971195f 100644 --- a/Arduino/epd2in13d/epd2in13d.h +++ b/Arduino/epd2in13d/epd2in13d.h @@ -43,7 +43,7 @@ public: Epd(); ~Epd(); - void Init(void); + int Init(void); void SendCommand(unsigned char command); void SendData(unsigned char data); void ReadBusy(void); From 1a3a24a978a2a0808a0eacb0a9862c3afbdfec97 Mon Sep 17 00:00:00 2001 From: SSYYL <1032789891@qq.com> Date: Mon, 10 Jan 2022 16:23:53 +0800 Subject: [PATCH 2/2] 3.7inch arduino example added a partial refresh example --- Arduino/epd3in7/epd3in7.cpp | 17 +++++++++++------ Arduino/epd3in7/epd3in7.h | 3 ++- Arduino/epd3in7/epd3in7.ino | 12 +++++++++--- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/Arduino/epd3in7/epd3in7.cpp b/Arduino/epd3in7/epd3in7.cpp index 149662d..762f387 100644 --- a/Arduino/epd3in7/epd3in7.cpp +++ b/Arduino/epd3in7/epd3in7.cpp @@ -223,7 +223,7 @@ void Epd::Reset(void) { /****************************************************************************** function : Display ******************************************************************************/ -void Epd::DisplayFrame(const UBYTE *Image) { +void Epd::DisplayFrame(const UBYTE *Image, bool isBase) { UWORD i; UWORD IMAGE_COUNTER = width * height / 8; @@ -238,9 +238,11 @@ void Epd::DisplayFrame(const UBYTE *Image) { for (i = 0; i < IMAGE_COUNTER; i++) { SendData(pgm_read_byte(&Image[i])); } - SendCommand(0x26); - for (i = 0; i < IMAGE_COUNTER; i++) { - SendData(pgm_read_byte(&Image[i])); + if(isBase) { + SendCommand(0x26); + for (i = 0; i < IMAGE_COUNTER; i++) { + SendData(pgm_read_byte(&Image[i])); + } } Load_LUT(1); @@ -320,8 +322,11 @@ void Epd::DisplayFrame_Part(const UBYTE *Image, UWORD Xstart, UWORD Ystart, UWOR Load_LUT(1); else Load_LUT(0); - SendCommand(0x20); - WaitUntilIdle(); +} + +void Epd::TurnOnDisplay(void) { + SendCommand(0x20); + WaitUntilIdle(); } /****************************************************************************** diff --git a/Arduino/epd3in7/epd3in7.h b/Arduino/epd3in7/epd3in7.h index ab9357f..d0e9145 100644 --- a/Arduino/epd3in7/epd3in7.h +++ b/Arduino/epd3in7/epd3in7.h @@ -44,10 +44,11 @@ public: int Init(void); void WaitUntilIdle(void); void Reset(void); - void DisplayFrame(const UBYTE *Image); + void DisplayFrame(const UBYTE *Image, bool isBase); void SendCommand(unsigned char command); void DisplayFrame_Partial(const UBYTE *Image, UWORD Xstart, UWORD Ystart, UWORD iwidth, UWORD iheight); void DisplayFrame_Part(const UBYTE *Image, UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, bool isGC); + void TurnOnDisplay(void); void SendData(unsigned char data); void Sleep(void); void Clear(UBYTE mode); diff --git a/Arduino/epd3in7/epd3in7.ino b/Arduino/epd3in7/epd3in7.ino index ca14fe4..41eb5ef 100644 --- a/Arduino/epd3in7/epd3in7.ino +++ b/Arduino/epd3in7/epd3in7.ino @@ -49,7 +49,7 @@ void setup() { Serial.print("e-Paper Clear\r\n "); epd.Clear(1); Serial.print("draw image\r\n "); - epd.DisplayFrame(IMAGE_DATA); // Set base image + epd.DisplayFrame(IMAGE_DATA, true); // Set base image delay(3000); paint.SetWidth(40); @@ -59,7 +59,7 @@ void setup() { UBYTE i; time_start_ms = millis(); - for(i=0; i<10; i++) { + for(i=0; i<5; i++) { time_now_s = (millis() - time_start_ms) / 1000; char time_string[] = {'0', '0', ':', '0', '0', '\0'}; time_string[0] = time_now_s / 60 / 10 + '0'; @@ -71,7 +71,13 @@ void setup() { paint.DrawStringAt(20, 10, time_string, &Font16, COLORED); Serial.print("refresh------\r\n "); // epd.DisplayFrame_Partial(paint.GetImage(), 20, 100, 40, 120); // Width must be a multiple of 8 - epd.DisplayFrame_Part(paint.GetImage(), 40, 30, 80, 140, false); // Xstart must be a multiple of 8 + /* Writes new data to RAM */ + epd.DisplayFrame_Part(paint.GetImage(), 40+i*40, 30, 80+i*40, 140, false); // Xstart must be a multiple of 8 + /* Displays and toggles the RAM currently in use */ + epd.TurnOnDisplay(); + /* Writes the last data to another RAM */ + epd.DisplayFrame_Part(paint.GetImage(), 40+i*40, 30, 80+i*40, 140, false); // Xstart must be a multiple of 8 + delay(500); } Serial.print("clear and sleep......\r\n ");