E-Paper GDE021A1 demo app
Dependencies: BreathLed EPD_GDE021A1 GraphicUtil TFT_fonts mbed
main.cpp@0:5f680d50c5a6, 2015-04-15 (annotated)
- Committer:
- steeven
- Date:
- Wed Apr 15 11:30:57 2015 +0000
- Revision:
- 0:5f680d50c5a6
init;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
steeven | 0:5f680d50c5a6 | 1 | // Do not remove the include below |
steeven | 0:5f680d50c5a6 | 2 | #include "mbed.h" |
steeven | 0:5f680d50c5a6 | 3 | #include "EpdGDE021A1.h" |
steeven | 0:5f680d50c5a6 | 4 | #include "Arial12x12.h" |
steeven | 0:5f680d50c5a6 | 5 | #include "Arial24x23.h" |
steeven | 0:5f680d50c5a6 | 6 | #include "BreathLed.h" |
steeven | 0:5f680d50c5a6 | 7 | |
steeven | 0:5f680d50c5a6 | 8 | |
steeven | 0:5f680d50c5a6 | 9 | /* |
steeven | 0:5f680d50c5a6 | 10 | * E-ink EPD module: GDE021A1 Built-in controller: SSD1606 |
steeven | 0:5f680d50c5a6 | 11 | * http://www.good-display.cn/products_detail/&productId=158.html |
steeven | 0:5f680d50c5a6 | 12 | * |
steeven | 0:5f680d50c5a6 | 13 | * Connection: |
steeven | 0:5f680d50c5a6 | 14 | * Mega128RFA1 LPC1678 |
steeven | 0:5f680d50c5a6 | 15 | * NC |
steeven | 0:5f680d50c5a6 | 16 | * 3V3 Vout |
steeven | 0:5f680d50c5a6 | 17 | * 5V |
steeven | 0:5f680d50c5a6 | 18 | * GND GND |
steeven | 0:5f680d50c5a6 | 19 | * GND |
steeven | 0:5f680d50c5a6 | 20 | * P2 |
steeven | 0:5f680d50c5a6 | 21 | * |
steeven | 0:5f680d50c5a6 | 22 | * NC |
steeven | 0:5f680d50c5a6 | 23 | * BS1 //SPI 4-line or 3 line(9bits) |
steeven | 0:5f680d50c5a6 | 24 | * BUSY //busy |
steeven | 0:5f680d50c5a6 | 25 | * nRES P10 //reset |
steeven | 0:5f680d50c5a6 | 26 | * nD/C P9 //data/cmd |
steeven | 0:5f680d50c5a6 | 27 | * nCS P8 //SPI cs |
steeven | 0:5f680d50c5a6 | 28 | * SCLK P7 //SPI clock |
steeven | 0:5f680d50c5a6 | 29 | * SDA P5 //SPI MOSI |
steeven | 0:5f680d50c5a6 | 30 | * |
steeven | 0:5f680d50c5a6 | 31 | * Warning: |
steeven | 0:5f680d50c5a6 | 32 | * SPI-0 is used, can't use the spare p6(miso) for other usage! |
steeven | 0:5f680d50c5a6 | 33 | * SPI 3-wire: |
steeven | 0:5f680d50c5a6 | 34 | * Disconnect BS1 or pull-high, disconnect nD/C |
steeven | 0:5f680d50c5a6 | 35 | * don't pass "dc" in class constructor |
steeven | 0:5f680d50c5a6 | 36 | * Didn't work for me |
steeven | 0:5f680d50c5a6 | 37 | * |
steeven | 0:5f680d50c5a6 | 38 | */ |
steeven | 0:5f680d50c5a6 | 39 | |
steeven | 0:5f680d50c5a6 | 40 | steeven::BreathLed led1(LED1); |
steeven | 0:5f680d50c5a6 | 41 | DigitalOut led2(LED2); |
steeven | 0:5f680d50c5a6 | 42 | DigitalOut led3(LED3); |
steeven | 0:5f680d50c5a6 | 43 | DigitalOut led4(LED4); |
steeven | 0:5f680d50c5a6 | 44 | AnalogIn adc5(p20); |
steeven | 0:5f680d50c5a6 | 45 | AnalogIn adc4(p19); |
steeven | 0:5f680d50c5a6 | 46 | |
steeven | 0:5f680d50c5a6 | 47 | Serial pc(USBTX, USBRX); |
steeven | 0:5f680d50c5a6 | 48 | |
steeven | 0:5f680d50c5a6 | 49 | EpdGDE021A1 epd(p5, p7, p8, p9, p10); |
steeven | 0:5f680d50c5a6 | 50 | |
steeven | 0:5f680d50c5a6 | 51 | int main() { |
steeven | 0:5f680d50c5a6 | 52 | int i = 0, j, h = 10, offset; |
steeven | 0:5f680d50c5a6 | 53 | |
steeven | 0:5f680d50c5a6 | 54 | led1.loop(); |
steeven | 0:5f680d50c5a6 | 55 | |
steeven | 0:5f680d50c5a6 | 56 | pc.printf("clear\n"); |
steeven | 0:5f680d50c5a6 | 57 | // epd.g.clear(); |
steeven | 0:5f680d50c5a6 | 58 | for (i = 3; i >=0; i--) { |
steeven | 0:5f680d50c5a6 | 59 | epd.color(i,3); |
steeven | 0:5f680d50c5a6 | 60 | offset = (h + 2) * 3; |
steeven | 0:5f680d50c5a6 | 61 | epd.rect(offset * 0 + (h + 2) * i, 1, offset * 0 + (h + 2) * i + h, |
steeven | 0:5f680d50c5a6 | 62 | 1 + h); |
steeven | 0:5f680d50c5a6 | 63 | epd.fillrect(offset * 1 + (h + 2) * i, 1, |
steeven | 0:5f680d50c5a6 | 64 | offset * 1 + (h + 2) * i + h, 1 + h); |
steeven | 0:5f680d50c5a6 | 65 | epd.circle(offset * 2 + (h + 2) * i + h / 2, h / 2 + 1, h / 2); |
steeven | 0:5f680d50c5a6 | 66 | epd.fillcircle(offset * 3 + (h + 2) * i + h / 2, h / 2 + 1, h / 2); |
steeven | 0:5f680d50c5a6 | 67 | epd.line(80, 42+i, 170, 33 + i * 10); |
steeven | 0:5f680d50c5a6 | 68 | } |
steeven | 0:5f680d50c5a6 | 69 | |
steeven | 0:5f680d50c5a6 | 70 | epd.locate(0, h + 2); |
steeven | 0:5f680d50c5a6 | 71 | epd.font(Arial24x23); |
steeven | 0:5f680d50c5a6 | 72 | epd.print("Hello world\n"); |
steeven | 0:5f680d50c5a6 | 73 | epd.font(Arial12x12); |
steeven | 0:5f680d50c5a6 | 74 | epd.print("Please input:\n> "); |
steeven | 0:5f680d50c5a6 | 75 | epd.update(); |
steeven | 0:5f680d50c5a6 | 76 | |
steeven | 0:5f680d50c5a6 | 77 | while (1) { |
steeven | 0:5f680d50c5a6 | 78 | j = 0; |
steeven | 0:5f680d50c5a6 | 79 | led4 = !led4; |
steeven | 0:5f680d50c5a6 | 80 | wait(0.5); |
steeven | 0:5f680d50c5a6 | 81 | while (pc.readable()) { |
steeven | 0:5f680d50c5a6 | 82 | epd.putc(pc.getc()); |
steeven | 0:5f680d50c5a6 | 83 | j++; |
steeven | 0:5f680d50c5a6 | 84 | } |
steeven | 0:5f680d50c5a6 | 85 | if (j){ |
steeven | 0:5f680d50c5a6 | 86 | epd.print("\n> "); |
steeven | 0:5f680d50c5a6 | 87 | epd.update(); |
steeven | 0:5f680d50c5a6 | 88 | } |
steeven | 0:5f680d50c5a6 | 89 | } |
steeven | 0:5f680d50c5a6 | 90 | } |
steeven | 0:5f680d50c5a6 | 91 |