E_paper, E_ink, Screen size 1.54", resolution 200x200, 4 wire spi, Waveshare, Black and White, Kl25Z, 8 wire print connector, supply 3.3 Volt, IL0373 Controller, font size is 8, 12, 16 and 24.

Dependencies:   mbed

Revision:
9:9503e1ff98ea
Parent:
8:01db118d1694
Child:
10:08e026240a5f
--- a/main.cpp	Thu Mar 29 18:27:28 2018 +0000
+++ b/main.cpp	Sat Mar 31 08:36:11 2018 +0000
@@ -24,6 +24,18 @@
  * THE SOFTWARE.
  */
 
+// The 1.54 Incht E-paper Waveshare software is modified to work on a Kl25Z
+// epaper --------- KL25X
+// BUSY ----------- PTA13
+// RST ------------ PTA17
+// DC ------------- PTD5
+// CS ------------- PTD0
+// CLK ------------ PTD1
+// DIN ------------ PTD2
+// GND ------------ PTE3
+// 3.3V ----------- PTD9
+// NO connection with PTD3
+
 #include "mbed.h"
 #include "epd1in54.h"
 #include "epdpaint.h"
@@ -41,7 +53,7 @@
 DigitalIn busy_pin(PTA13, PullNone);
 SPI epaper(PTD2,PTD3,PTD1);  //MOSI, MISO, CLK
 DigitalOut myled(LED2);
-
+Timer timer;
 
 /**
   * Due to RAM not enough in Arduino UNO, a frame buffer is not allowed.
@@ -59,7 +71,7 @@
 {
     // put your setup code here, to run once:
     if (epd.Init(lut_full_update) != 0) {
-       pc.printf("e-Paper init failed !!!");
+        pc.printf("e-Paper init failed !!!");
         return;
     }
 
@@ -70,23 +82,17 @@
      *  therefore you have to clear the frame memory twice.
      */
 
-    pc.printf("Display frame 1\n\r");
     epd.ClearFrameMemory(0xFF);   // bit set = white, bit reset = black
-    pc.printf("Display frame 2\n\r");
     epd.DisplayFrame();
-    pc.printf("Display frame 3\n\r");
     epd.ClearFrameMemory(0xFF);   // bit set = white, bit reset = black
-    pc.printf("Display frame 4\n\r");
     epd.DisplayFrame();
 
-    pc.printf("Rotate 0\n\r");
     paint.SetRotate(ROTATE_0);
     paint.SetWidth(200);
     paint.SetHeight(24);
 
     /* For simplicity, the arguments are explicit numerical coordinates */
 
-    pc.printf("Colored\n\r");
     paint.Clear(COLORED);
     paint.DrawStringAt(30, 4, "Hello world!", &Font16, UNCOLORED);
     epd.SetFrameMemory(paint.GetImage(), 0, 10, paint.GetWidth(), paint.GetHeight());
@@ -105,17 +111,14 @@
     paint.DrawLine(40, 0, 0, 50, COLORED);
     epd.SetFrameMemory(paint.GetImage(), 16, 60, paint.GetWidth(), paint.GetHeight());
 
-    pc.printf("Circle \n\r");
     paint.Clear(UNCOLORED);
     paint.DrawCircle(32, 32, 30, COLORED);
     epd.SetFrameMemory(paint.GetImage(), 120, 60, paint.GetWidth(), paint.GetHeight());
 
-    pc.printf("Fille Rectangle \n\r");
     paint.Clear(UNCOLORED);
     paint.DrawFilledRectangle(0, 0, 40, 50, COLORED);
     epd.SetFrameMemory(paint.GetImage(), 16, 130, paint.GetWidth(), paint.GetHeight());
 
-    pc.printf("Filled circle \n\r");
     paint.Clear(UNCOLORED);
     paint.DrawFilledCircle(32, 32, 30, COLORED);
     epd.SetFrameMemory(paint.GetImage(), 120, 130, paint.GetWidth(), paint.GetHeight());
@@ -139,15 +142,13 @@
     epd.SetFrameMemory(IMAGE_DATA);
     epd.DisplayFrame();
 
-    //time_start_ms = millis();
-    time_start_ms = 0;
+    time_start_ms = timer.read_ms();
 }
 
 void loop()
 {
     // put your main code here, to run repeatedly:
-    //time_now_s = (millis() - time_start_ms) / 1000;
-    time_now_s = 999;
+    time_now_s = (timer.read_ms() - time_start_ms) / 1000;
     char time_string[] = {'0', '0', ':', '0', '0', '\0'};
     time_string[0] = time_now_s / 60 / 10 + '0';
     time_string[1] = time_now_s / 60 % 10 + '0';
@@ -162,22 +163,21 @@
     paint.DrawStringAt(0, 4, time_string, &Font24, COLORED);
     epd.SetFrameMemory(paint.GetImage(), 80, 72, paint.GetWidth(), paint.GetHeight());
     epd.DisplayFrame();
-
-    wait_ms(500);
 }
 
 int main()
 {
+    timer.start();
     pc.printf("\n\r\n\r\n\rWaveshare 1.54 inch e-Paper start\n\r");
     setup();
-    pc.printf("Loop\n\r");
-    loop();
-    pc.printf("Done\n\r");
+
     while(1) {
+        loop();
         myled = 1;
-        wait(0.2);
+        wait(0.5);
         myled = 0;
-        wait(0.2);
+        wait(0.5);
     }
+
 }