Forráskód Böngészése

Added a 2.13V3 Arduino GUI library usage routine

SSYYL 2 éve
szülő
commit
cb2805f9b7

+ 24 - 0
Arduino/epd2in13_V3/epd2in13_V3.cpp

@@ -90,6 +90,8 @@ Epd::Epd()
     busy_pin = BUSY_PIN;
     width = EPD_WIDTH;
     height = EPD_HEIGHT;
+    bufwidth = 128/8;  //16
+    bufheight = 63;
 };
 
 /******************************************************************************
@@ -281,6 +283,7 @@ void Epd::Reset(void)
     DelayMs(2);
     DigitalWrite(reset_pin, HIGH);
     DelayMs(20);
+    this->count = 0; 
 }
 
 /******************************************************************************
@@ -332,6 +335,27 @@ void Epd::Display(const unsigned char* frame_buffer)
     WaitUntilIdle();
 }
 
+
+
+void Epd::Display1(const unsigned char* frame_buffer) {
+    if(this->count == 0){
+        SendCommand(0x24);
+        this->count++;
+    }else if(this->count > 0 && this->count < 4 ){
+        this->count++;
+    }
+    for(int i = 0; i < this->bufwidth * this->bufheight; i++){
+            SendData(frame_buffer[i]);
+    }
+    if(this->count == 4){
+        SendCommand(0x22);
+        SendData(0xC7);
+        SendCommand(0x20);
+        WaitUntilIdle();
+        this->count = 0;
+    }
+}
+
 /******************************************************************************
 function :	Refresh a base image
 parameter:

+ 4 - 0
Arduino/epd2in13_V3/epd2in13_V3.h

@@ -44,6 +44,9 @@ class Epd : EpdIf {
 public:
     unsigned long width;
     unsigned long height;
+    int bufwidth;
+    int bufheight;
+    int count;
 
     Epd();
     ~Epd();
@@ -57,6 +60,7 @@ public:
     void Reset(void);
     void Clear(void);
     void Display(const unsigned char* frame_buffer);
+    void Display1(const unsigned char* frame_buffer);
     void DisplayPartBaseImage(const unsigned char* frame_buffer);
     void DisplayPart(const unsigned char* frame_buffer);
     void ClearPart(void);

+ 52 - 11
Arduino/epd2in13_V3/epd2in13_V3.ino

@@ -1,7 +1,19 @@
 #include <SPI.h>
 #include "epd2in13_V3.h"
+#include "epdpaint.h"
 #include "imagedata.h"
 
+#define COLORED     0
+#define UNCOLORED   1
+
+/**
+  * Due to RAM not enough in Arduino UNO, a frame buffer is not allowed.
+  * In this case, a smaller image buffer is allocated and you have to 
+  * update a partial display several times.
+  * 1 byte = 8 pixels, therefore you have to set 8*N pixels at a time.
+  */
+unsigned char image[1050];
+Paint paint(image, 0, 0);
 Epd epd;
 
 void setup()
@@ -12,17 +24,46 @@ void setup()
   epd.Init(FULL);
   epd.Display(IMAGE_DATA);
 
-  Serial.println("epd PART");
-  epd.DisplayPartBaseImage(IMAGE_DATA);
-  char i = 0;
-  for (i = 0; i < 10; i++) {
-    Serial.println("e-Paper PART IMAGE_DATA");
-    epd.Init(PART);
-    epd.DisplayPart(IMAGE_DATA);
-    Serial.println("e-Paper PART Clear");
-	epd.Init(PART);
-    epd.ClearPart();
-  }
+  delay(2000);
+
+  Paint paint(image, epd.bufwidth*8, epd.bufheight);    //width should be the multiple of 8
+
+  paint.Clear(UNCOLORED);
+  paint.DrawStringAt(8, 2, "e-Paper Demo", &Font12, COLORED);
+  paint.DrawStringAt(8, 20, "Hello world", &Font12, COLORED);
+  epd.Display1(image);//1
+
+  paint.Clear(UNCOLORED);
+  paint.DrawRectangle(2,2,50,50,COLORED);
+  paint.DrawLine(2,2,50,50,COLORED);
+  paint.DrawLine(2,50,50,2,COLORED);
+  paint.DrawFilledRectangle(52,2,100,50,COLORED);
+  paint.DrawLine(52,2,100,50,UNCOLORED);
+  paint.DrawLine(100,2,52,50,UNCOLORED);
+  epd.Display1(image);//2
+  
+  paint.Clear(UNCOLORED);
+  paint.DrawCircle(25,25,20,COLORED);
+  paint.DrawFilledCircle(75,25,20,COLORED);
+  epd.Display1(image);//3
+  
+  paint.Clear(UNCOLORED);
+  epd.Display1(image);//4
+
+  delay(2000);
+
+  // Serial.println("epd PART");
+  // epd.DisplayPartBaseImage(IMAGE_DATA);
+  // char i = 0;
+  // for (i = 0; i < 10; i++) {
+  //   Serial.println("e-Paper PART IMAGE_DATA");
+  //   epd.Init(PART);
+  //   epd.DisplayPart(IMAGE_DATA);
+  //   Serial.println("e-Paper PART Clear");
+	//   epd.Init(PART);
+  //   epd.ClearPart();
+  //   delay(2000);
+  // }
   
   epd.Init(FULL);
   Serial.println("e-Paper clear and sleep");

+ 10 - 10
STM32/STM32-F103ZET6/User/Examples/EPD_2in7_V2_test.c

@@ -40,7 +40,7 @@ int EPD_test(void)
     }
 
     printf("e-Paper Init and Clear...\r\n");
-		EPD_2IN7_V2_Init();
+	  EPD_2IN7_V2_Init();
 
     EPD_2IN7_V2_Clear();
 
@@ -95,8 +95,8 @@ int EPD_test(void)
     Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE);
     Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK);
 
-    Paint_DrawString_CN(130, 0,"ÄãºÃabc", &Font12CN, BLACK, WHITE);
-    Paint_DrawString_CN(130, 20, "΢ѩµç×Ó", &Font24CN, WHITE, BLACK);
+    Paint_DrawString_CN(130, 0,"���abc", &Font12CN, BLACK, WHITE);
+    Paint_DrawString_CN(130, 20, "΢ѩ����", &Font24CN, WHITE, BLACK);
 
     EPD_2IN7_V2_Display_Fast(BlackImage);
     DEV_Delay_ms(3000);
@@ -147,8 +147,8 @@ int EPD_test(void)
     Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE);
     Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK);
 
-    Paint_DrawString_CN(130, 0,"ÄãºÃabc", &Font12CN, BLACK, WHITE);
-    Paint_DrawString_CN(130, 20, "΢ѩµç×Ó", &Font24CN, WHITE, BLACK);
+    Paint_DrawString_CN(130, 0,"���abc", &Font12CN, BLACK, WHITE);
+    Paint_DrawString_CN(130, 20, "΢ѩ����", &Font24CN, WHITE, BLACK);
 
     EPD_2IN7_V2_Display_Base(BlackImage);
     DEV_Delay_ms(3000);
@@ -233,11 +233,11 @@ int EPD_test(void)
     Paint_DrawString_EN(10, 20, "hello world", &Font12, GRAY3, GRAY1);
     Paint_DrawNum(10, 33, 123456789, &Font12, GRAY4, GRAY2);
     Paint_DrawNum(10, 50, 987654321, &Font16, GRAY1, GRAY4);
-    Paint_DrawString_CN(150, 0,"ÄãºÃabc", &Font12CN, GRAY4, GRAY1);
-    Paint_DrawString_CN(150, 20,"ÄãºÃabc", &Font12CN, GRAY3, GRAY2);
-    Paint_DrawString_CN(150, 40,"ÄãºÃabc", &Font12CN, GRAY2, GRAY3);
-    Paint_DrawString_CN(150, 60,"ÄãºÃabc", &Font12CN, GRAY1, GRAY4);
-    Paint_DrawString_CN(10, 130, "΢ѩµç×Ó", &Font24CN, GRAY1, GRAY4);
+    Paint_DrawString_CN(150, 0,"���abc", &Font12CN, GRAY4, GRAY1);
+    Paint_DrawString_CN(150, 20,"���abc", &Font12CN, GRAY3, GRAY2);
+    Paint_DrawString_CN(150, 40,"���abc", &Font12CN, GRAY2, GRAY3);
+    Paint_DrawString_CN(150, 60,"���abc", &Font12CN, GRAY1, GRAY4);
+    Paint_DrawString_CN(10, 130, "΢ѩ����", &Font24CN, GRAY1, GRAY4);
     EPD_2IN7_V2_4GrayDisplay(BlackImage);
     DEV_Delay_ms(3000);
 		

+ 2 - 2
STM32/STM32-F103ZET6/User/Examples/EPD_2in9_V2_test.c

@@ -94,8 +94,8 @@ int EPD_test(void)
     Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE);
     Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK);
 
-    Paint_DrawString_CN(130, 0,"你好abc", &Font12CN, BLACK, WHITE);
-    Paint_DrawString_CN(130, 20, "微雪电�", &Font24CN, WHITE, BLACK);
+    Paint_DrawString_CN(130, 0, "ÄãºÃabc", &Font12CN, BLACK, WHITE);
+    Paint_DrawString_CN(130, 20, "΢ѩµç×Ó", &Font24CN, WHITE, BLACK);
 
     EPD_2IN9_V2_Display_Base(BlackImage);
     DEV_Delay_ms(3000);

+ 15 - 15
STM32/STM32-F103ZET6/User/e-Paper/EPD_2in7_V2.c

@@ -164,24 +164,24 @@ parameter:
 ******************************************************************************/
 void EPD_2IN7_V2_Init(void)
 {
-  EPD_2IN7_V2_Reset();
-	EPD_2IN7_V2_ReadBusy();
-	
-	EPD_2IN7_V2_SendCommand(0x12); //SWRESET
-	EPD_2IN7_V2_ReadBusy();
+    EPD_2IN7_V2_Reset();
+    EPD_2IN7_V2_ReadBusy();
 
-  EPD_2IN7_V2_SendCommand(0x45); //set Ram-Y address start/end position          
-	EPD_2IN7_V2_SendData(0x00);
-	EPD_2IN7_V2_SendData(0x00);
-	EPD_2IN7_V2_SendData(0x07); //0x0107-->(263+1)=264
-	EPD_2IN7_V2_SendData(0x01);
+    EPD_2IN7_V2_SendCommand(0x12); //SWRESET
+    EPD_2IN7_V2_ReadBusy();
 
-  EPD_2IN7_V2_SendCommand(0x4F);   // set RAM y address count to 0;    
-	EPD_2IN7_V2_SendData(0x00);
-	EPD_2IN7_V2_SendData(0x00);
+    EPD_2IN7_V2_SendCommand(0x45); //set Ram-Y address start/end position          
+    EPD_2IN7_V2_SendData(0x00);
+    EPD_2IN7_V2_SendData(0x00);
+    EPD_2IN7_V2_SendData(0x07); //0x0107-->(263+1)=264
+    EPD_2IN7_V2_SendData(0x01);
 
-	EPD_2IN7_V2_SendCommand(0x11);   // data entry mode
-	EPD_2IN7_V2_SendData(0x03);
+    EPD_2IN7_V2_SendCommand(0x4F);   // set RAM y address count to 0;    
+    EPD_2IN7_V2_SendData(0x00);
+    EPD_2IN7_V2_SendData(0x00);
+
+    EPD_2IN7_V2_SendCommand(0x11);   // data entry mode
+    EPD_2IN7_V2_SendData(0x03);
 
 }
 void EPD_2IN7_V2_Init_Fast(void)

+ 3 - 0
Special Reminder.txt

@@ -0,0 +1,3 @@
+The Arduino program in this package only supports the Arduino series development boards, not the ESP32, ESP8266 and other development boards that use the Arduino IDE for development.
+ESP32 development board use: https://www.waveshare.com/wiki/E-Paper_ESP32_Driver_Board
+ESP8266 development board use: https://www.waveshare.com/wiki/E-Paper_ESP8266_Driver_Board

+ 3 - 0
特别提醒.txt

@@ -0,0 +1,3 @@
+本程序包中的 Arduino 程序,仅支持 Arduino 系列的开发板,不支持 ESP32、ESP8266 等使用 Arduino IDE 进行开发的其他开发板
+ESP32开发板使用 :https://www.waveshare.net/wiki/E-Paper_ESP32_Driver_Board
+ESP8266开发板使用 :https://www.waveshare.net/wiki/E-Paper_ESP8266_Driver_Board