Kenji Arai / Mbed OS ePD_2R13inch_test_program

Dependencies:   EPD_2R13

Committer:
kenjiArai
Date:
Tue Apr 30 02:13:16 2019 +0000
Revision:
0:c0e0a185358d
Child:
1:271991ff8004
test program for 2.13inch e-Paper HAT (C)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:c0e0a185358d 1 /*
kenjiArai 0:c0e0a185358d 2 * e-Paper control program
kenjiArai 0:c0e0a185358d 3 *
kenjiArai 0:c0e0a185358d 4 * Copyright (c) 2019 Kenji Arai / JH1PJL
kenjiArai 0:c0e0a185358d 5 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 0:c0e0a185358d 6 * http://mbed.org/users/kenjiArai/
kenjiArai 0:c0e0a185358d 7 * Created: April 27th, 2019
kenjiArai 0:c0e0a185358d 8 * Revised: April 30th, 2019
kenjiArai 0:c0e0a185358d 9 *
kenjiArai 0:c0e0a185358d 10 * Tested on Nucleo-F446RE with mbed-os5.12.2
kenjiArai 0:c0e0a185358d 11 *
kenjiArai 0:c0e0a185358d 12 * Refrence software
kenjiArai 0:c0e0a185358d 13 * https://github.com/waveshare/e-Paper
kenjiArai 0:c0e0a185358d 14 * https://os.mbed.com/users/imachooon/code/epd1in54/
kenjiArai 0:c0e0a185358d 15 * Thanks imamura-san
kenjiArai 0:c0e0a185358d 16 *
kenjiArai 0:c0e0a185358d 17 * Technical documents
kenjiArai 0:c0e0a185358d 18 * https://www.waveshare.com/wiki/2.13inch_e-Paper_HAT_(B)
kenjiArai 0:c0e0a185358d 19 *
kenjiArai 0:c0e0a185358d 20 * Product
kenjiArai 0:c0e0a185358d 21 * http://akizukidenshi.com/catalog/g/gP-13757/
kenjiArai 0:c0e0a185358d 22 * https://www.waveshare.com/2.13inch-e-paper-hat-b.htm
kenjiArai 0:c0e0a185358d 23 */
kenjiArai 0:c0e0a185358d 24
kenjiArai 0:c0e0a185358d 25 // Include --------------------------------------------------------------------
kenjiArai 0:c0e0a185358d 26 #include "mbed.h"
kenjiArai 0:c0e0a185358d 27 #include "epd2in13c.h"
kenjiArai 0:c0e0a185358d 28 #include "epdpaint.h"
kenjiArai 0:c0e0a185358d 29
kenjiArai 0:c0e0a185358d 30 // Definition -----------------------------------------------------------------
kenjiArai 0:c0e0a185358d 31 #define COLORED 0
kenjiArai 0:c0e0a185358d 32 #define UNCOLORED 1
kenjiArai 0:c0e0a185358d 33
kenjiArai 0:c0e0a185358d 34 // Constructor ----------------------------------------------------------------
kenjiArai 0:c0e0a185358d 35 // mosi, miso, sclk, cs, dc, rst, busy, pwr
kenjiArai 0:c0e0a185358d 36 Epd epd = Epd( D4, NC, D3,D10, D9, D8, D7, NC);
kenjiArai 0:c0e0a185358d 37 DigitalOut myled(LED1);
kenjiArai 0:c0e0a185358d 38 DigitalIn sw(USER_BUTTON);
kenjiArai 0:c0e0a185358d 39 Serial pc(USBTX, USBRX);
kenjiArai 0:c0e0a185358d 40 Timer t;
kenjiArai 0:c0e0a185358d 41
kenjiArai 0:c0e0a185358d 42 // RAM ------------------------------------------------------------------------
kenjiArai 0:c0e0a185358d 43 uint8_t image[EPD_HEIGHT*(EPD_WIDTH/8 + 1)];
kenjiArai 0:c0e0a185358d 44
kenjiArai 0:c0e0a185358d 45 // ROM / Constant data --------------------------------------------------------
kenjiArai 0:c0e0a185358d 46
kenjiArai 0:c0e0a185358d 47 // Function prototypes --------------------------------------------------------
kenjiArai 0:c0e0a185358d 48 extern void time_enter_mode(void);
kenjiArai 0:c0e0a185358d 49
kenjiArai 0:c0e0a185358d 50 //------------------------------------------------------------------------------
kenjiArai 0:c0e0a185358d 51 // Control Program
kenjiArai 0:c0e0a185358d 52 //------------------------------------------------------------------------------
kenjiArai 0:c0e0a185358d 53 int main()
kenjiArai 0:c0e0a185358d 54 {
kenjiArai 0:c0e0a185358d 55 time_t seconds;
kenjiArai 0:c0e0a185358d 56 char buf[32];
kenjiArai 0:c0e0a185358d 57
kenjiArai 0:c0e0a185358d 58 t.reset();
kenjiArai 0:c0e0a185358d 59 t.start();
kenjiArai 0:c0e0a185358d 60 if (sw == 0) { // USER BUTTON is on then go to time enter mode
kenjiArai 0:c0e0a185358d 61 time_enter_mode();
kenjiArai 0:c0e0a185358d 62 }
kenjiArai 0:c0e0a185358d 63 seconds = time(NULL); // read current time
kenjiArai 0:c0e0a185358d 64 if (epd.Init() != 0) { // initialize e-Paper control program
kenjiArai 0:c0e0a185358d 65 printf("e-Paper init failed");
kenjiArai 0:c0e0a185358d 66 return -1;
kenjiArai 0:c0e0a185358d 67 }
kenjiArai 0:c0e0a185358d 68 epd.ClearFrame();
kenjiArai 0:c0e0a185358d 69 ThisThread::sleep_for(200);
kenjiArai 0:c0e0a185358d 70 Paint paint(image, EPD_WIDTH, EPD_HEIGHT);
kenjiArai 0:c0e0a185358d 71 paint.Clear(UNCOLORED);
kenjiArai 0:c0e0a185358d 72 paint.SetRotate(ROTATE_90);
kenjiArai 0:c0e0a185358d 73 paint.DrawStringAt(0, 4, "12345678901234567890123456789",
kenjiArai 0:c0e0a185358d 74 &Font12, COLORED);
kenjiArai 0:c0e0a185358d 75 paint.DrawStringAt(0, 16, "Waveshare 2.13 e-Paper WBY",
kenjiArai 0:c0e0a185358d 76 &Font12, COLORED);
kenjiArai 0:c0e0a185358d 77 paint.DrawStringAt(0, 30, "Run on mbed-os5.12",
kenjiArai 0:c0e0a185358d 78 &Font16, COLORED);
kenjiArai 0:c0e0a185358d 79 paint.DrawStringAt(0, 42, " tested on Nucleo-F446RE",
kenjiArai 0:c0e0a185358d 80 &Font12, COLORED);
kenjiArai 0:c0e0a185358d 81 paint.DrawStringAt(0, 54, " by JH1PJL ",
kenjiArai 0:c0e0a185358d 82 &Font12, COLORED);
kenjiArai 0:c0e0a185358d 83 strftime(buf, 30, "'%y-%m-%d %H:%M", localtime(&seconds));
kenjiArai 0:c0e0a185358d 84 paint.DrawStringAt(0, 90, buf, &Font16, COLORED);
kenjiArai 0:c0e0a185358d 85 strftime(buf, 30, " %B %d,'%y, %H:%M:%S", localtime(&seconds));
kenjiArai 0:c0e0a185358d 86 pc.puts(buf);
kenjiArai 0:c0e0a185358d 87 epd.SetPartialWindowBlack(paint.GetImage(), 0, 8,
kenjiArai 0:c0e0a185358d 88 paint.GetWidth(), paint.GetHeight());
kenjiArai 0:c0e0a185358d 89 paint.Clear(UNCOLORED);
kenjiArai 0:c0e0a185358d 90 paint.SetRotate(ROTATE_90);
kenjiArai 0:c0e0a185358d 91 paint.DrawFilledRectangle(0, 74, 180, 80, COLORED);
kenjiArai 0:c0e0a185358d 92 paint.DrawFilledCircle(180, 76, 18, COLORED);
kenjiArai 0:c0e0a185358d 93 epd.SetPartialWindowYellow(paint.GetImage(), 0, 8,
kenjiArai 0:c0e0a185358d 94 paint.GetWidth(), paint.GetHeight());
kenjiArai 0:c0e0a185358d 95 epd.DisplayFrame();
kenjiArai 0:c0e0a185358d 96 epd.Sleep();
kenjiArai 0:c0e0a185358d 97 pc.printf(" Display + Refresh time = %5.1f Sec\r\n", t.read());
kenjiArai 0:c0e0a185358d 98 ThisThread::sleep_for((1000 * 60 * 5) - t.read_ms()); // sleep 5 minutes
kenjiArai 0:c0e0a185358d 99 system_reset(); // restart
kenjiArai 0:c0e0a185358d 100 }