E-Paper Device (EPD) based MiniNote module, powered by mbed on LPC1114FBD48. Shared in public domain with enclosure in 3D step format, hardware interface compatible with microBUS interface. Anyone can contribute on this project.
E-Badge MiniNote Project on mbed/NXP LPC1114 platform
- About E-Badge MiniNote Project
- E-Badge Firmware Design
- Enclosure ID in 3D step format
- Python utilities
- Demo applications
- New applications with cloud server
- make mbed looks Arduino compatible
- debug in Keil, shared with mbed
- make it bigger with more memory
- make it smaller with mini connector
- make it stronger with mikroBUS
- Make it pretty with line art
- Developement Status Update
main.cpp@2:bb9f154ea2f4, 2014-06-09 (annotated)
- Committer:
- allankliu
- Date:
- Mon Jun 09 11:01:38 2014 +0000
- Revision:
- 2:bb9f154ea2f4
- Parent:
- 0:33994cfad0c2
- Child:
- 3:1fa000d4da94
Fixed software SPI, reduce memory usage with 1K5 framebuffer and lightweight I2C NVMEM _24LCXXX lib.The code can be fited into LPC1114/2xx devices.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
allankliu | 0:33994cfad0c2 | 1 | #include "mbed.h" |
allankliu | 0:33994cfad0c2 | 2 | #include "ssd1606.h" |
allankliu | 2:bb9f154ea2f4 | 3 | //#include "Ebadge.h" |
allankliu | 2:bb9f154ea2f4 | 4 | #include "_24LCXXX.h" |
allankliu | 2:bb9f154ea2f4 | 5 | #include "rom_image.h" |
allankliu | 0:33994cfad0c2 | 6 | |
allankliu | 0:33994cfad0c2 | 7 | #define STX 0x02 |
allankliu | 0:33994cfad0c2 | 8 | #define ETX 0x03 |
allankliu | 0:33994cfad0c2 | 9 | #define DISPWIDTH 172 |
allankliu | 0:33994cfad0c2 | 10 | #define DISPHEIGHT 72 |
allankliu | 0:33994cfad0c2 | 11 | #define DISPBPP 2 |
allankliu | 0:33994cfad0c2 | 12 | #define DISPBUFSIZE DISPWIDTH * DISPHEIGHT * DISPBPP / 8 |
allankliu | 0:33994cfad0c2 | 13 | |
allankliu | 0:33994cfad0c2 | 14 | // naked LPC1114 on breadboard, install LED pin28, pasive piezo-buzzer pin1 |
allankliu | 0:33994cfad0c2 | 15 | DigitalOut myled(dp28); // LED ... P0_7 (pin 28) |
allankliu | 0:33994cfad0c2 | 16 | Serial uart(dp16, dp15); // UART .. P1_7: TX (pin 16), P1_6: RX (pin 15) |
allankliu | 2:bb9f154ea2f4 | 17 | //PwmOut pwm(dp1); // PWM ... P0_8: CT16B0_MAT0 (pin1); sorry, blocking SPI! |
allankliu | 0:33994cfad0c2 | 18 | |
allankliu | 0:33994cfad0c2 | 19 | |
allankliu | 0:33994cfad0c2 | 20 | uint16_t xmtptr; |
allankliu | 0:33994cfad0c2 | 21 | uint16_t xmtsize; |
allankliu | 0:33994cfad0c2 | 22 | |
allankliu | 0:33994cfad0c2 | 23 | //SSD1306 display(dp2,dp4,dp5,dp6,dp10); |
allankliu | 0:33994cfad0c2 | 24 | // SSD1606(cs, rst, dc, clk, busy, data); |
allankliu | 2:bb9f154ea2f4 | 25 | SSD1606 epd(P0_6,P0_3,P2_0,P1_9,P1_10,P1_11); |
allankliu | 2:bb9f154ea2f4 | 26 | |
allankliu | 2:bb9f154ea2f4 | 27 | I2C i2c(P0_5, P0_4); |
allankliu | 2:bb9f154ea2f4 | 28 | _24LCXXX nvmem(&i2c, 0x50); |
allankliu | 0:33994cfad0c2 | 29 | |
allankliu | 2:bb9f154ea2f4 | 30 | //enum EEPROM::TypeEeprom T24C256; |
allankliu | 2:bb9f154ea2f4 | 31 | //EEPROM fram2(P0_5,P0_4,0xA0,T24C256); |
allankliu | 2:bb9f154ea2f4 | 32 | |
allankliu | 2:bb9f154ea2f4 | 33 | char c = '0'; |
allankliu | 2:bb9f154ea2f4 | 34 | unsigned char sbuf[128]; |
allankliu | 0:33994cfad0c2 | 35 | |
allankliu | 0:33994cfad0c2 | 36 | void setup() { |
allankliu | 2:bb9f154ea2f4 | 37 | //pwm.period(0.001); // PWM period 1ms (1kHz) |
allankliu | 2:bb9f154ea2f4 | 38 | uart.baud(115200); // Baud rate |
allankliu | 2:bb9f154ea2f4 | 39 | //uart.puts("E-Badge MiniNote LPC1114 Demo Start.\n\r"); |
allankliu | 2:bb9f154ea2f4 | 40 | //nvmem.write(0x10,0x55); |
allankliu | 2:bb9f154ea2f4 | 41 | epd.initialize(); |
allankliu | 2:bb9f154ea2f4 | 42 | epd.clear(); |
allankliu | 2:bb9f154ea2f4 | 43 | epd.update(); |
allankliu | 2:bb9f154ea2f4 | 44 | epd.rom_image(gImage_one); |
allankliu | 2:bb9f154ea2f4 | 45 | |
allankliu | 2:bb9f154ea2f4 | 46 | /* |
allankliu | 2:bb9f154ea2f4 | 47 | epd.test_image(TEST_BLK); |
allankliu | 2:bb9f154ea2f4 | 48 | wait(3); |
allankliu | 2:bb9f154ea2f4 | 49 | epd.test_image(TEST_GREY2); |
allankliu | 2:bb9f154ea2f4 | 50 | wait(3); |
allankliu | 2:bb9f154ea2f4 | 51 | epd.test_image(TEST_GREY1); |
allankliu | 2:bb9f154ea2f4 | 52 | wait(3); |
allankliu | 2:bb9f154ea2f4 | 53 | epd.test_image(TEST_WHT); |
allankliu | 2:bb9f154ea2f4 | 54 | wait(3); |
allankliu | 2:bb9f154ea2f4 | 55 | */ |
allankliu | 2:bb9f154ea2f4 | 56 | nvmem.byte_write(0,1); |
allankliu | 2:bb9f154ea2f4 | 57 | nvmem.byte_write(1,2); |
allankliu | 2:bb9f154ea2f4 | 58 | nvmem.byte_write(2,3); |
allankliu | 2:bb9f154ea2f4 | 59 | nvmem.byte_write(3,4); |
allankliu | 0:33994cfad0c2 | 60 | } |
allankliu | 0:33994cfad0c2 | 61 | |
allankliu | 0:33994cfad0c2 | 62 | void loop() { |
allankliu | 0:33994cfad0c2 | 63 | if (uart.readable()) { |
allankliu | 0:33994cfad0c2 | 64 | c = uart.getc(); |
allankliu | 0:33994cfad0c2 | 65 | uart.putc(c); |
allankliu | 0:33994cfad0c2 | 66 | } |
allankliu | 0:33994cfad0c2 | 67 | } |
allankliu | 0:33994cfad0c2 | 68 | |
allankliu | 0:33994cfad0c2 | 69 | int main() { |
allankliu | 0:33994cfad0c2 | 70 | setup(); |
allankliu | 0:33994cfad0c2 | 71 | |
allankliu | 0:33994cfad0c2 | 72 | while(1) { // repeat (period 1sec) |
allankliu | 0:33994cfad0c2 | 73 | loop(); |
allankliu | 0:33994cfad0c2 | 74 | } |
allankliu | 0:33994cfad0c2 | 75 | } |