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.
Diff: main.cpp
- 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); } + }