Blue LED matrix (8x16) program. Gets text string through bluetooth and displays it on led matrix. Also has a clock function- get system time from a phone through bluetooth and enters clock mode. In clock mode it acts as a clock showing hours and minutes and blinking led every second. Clock mode can be broken if a text string is received through bluetooth.
Dependencies: mbed
main.cpp@12:a8364a98c38c, 2014-11-03 (annotated)
- Committer:
- DaniusKalv
- Date:
- Mon Nov 03 09:40:51 2014 +0000
- Revision:
- 12:a8364a98c38c
- Parent:
- 10:ee58d712c7fb
- Child:
- 13:96590015edd8
Test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DaniusKalv | 0:06ac39308380 | 1 | #include "mbed.h" |
DaniusKalv | 0:06ac39308380 | 2 | #include "matrix.h" |
DaniusKalv | 2:3cc1e2dec7a2 | 3 | #include "text.h" |
DaniusKalv | 6:76b89d8b62a0 | 4 | #include <string> |
DaniusKalv | 2:3cc1e2dec7a2 | 5 | |
DaniusKalv | 2:3cc1e2dec7a2 | 6 | text generator; |
DaniusKalv | 3:35a47548d29d | 7 | matrix display(p13, p12, p11, p14, p15, p17, p16); |
DaniusKalv | 6:76b89d8b62a0 | 8 | DigitalOut led(LED1); |
DaniusKalv | 5:76dd6da3e640 | 9 | Serial pc(USBTX, USBRX); |
DaniusKalv | 5:76dd6da3e640 | 10 | Serial bluetooth(p28,p27); |
DaniusKalv | 10:ee58d712c7fb | 11 | static char line[99], line_buffer[99]; |
DaniusKalv | 10:ee58d712c7fb | 12 | static bool mode_buffer = 0; |
DaniusKalv | 10:ee58d712c7fb | 13 | static uint8_t interrupt_flag = 0; |
DaniusKalv | 10:ee58d712c7fb | 14 | int realTime; |
DaniusKalv | 6:76b89d8b62a0 | 15 | void receive(); |
DaniusKalv | 12:a8364a98c38c | 16 | int test; |
DaniusKalv | 0:06ac39308380 | 17 | |
DaniusKalv | 0:06ac39308380 | 18 | int main() { |
DaniusKalv | 10:ee58d712c7fb | 19 | static bool m_mode; |
DaniusKalv | 10:ee58d712c7fb | 20 | char buffer[4]; |
DaniusKalv | 10:ee58d712c7fb | 21 | bool dot; |
DaniusKalv | 6:76b89d8b62a0 | 22 | pc.baud(115200); |
DaniusKalv | 5:76dd6da3e640 | 23 | bluetooth.baud(38400); |
DaniusKalv | 10:ee58d712c7fb | 24 | void (*foo)() = &receive; |
DaniusKalv | 10:ee58d712c7fb | 25 | bluetooth.attach(foo, Serial::RxIrq); |
DaniusKalv | 10:ee58d712c7fb | 26 | generator.generate("ABCD"); |
DaniusKalv | 5:76dd6da3e640 | 27 | while(true){ |
DaniusKalv | 10:ee58d712c7fb | 28 | /*if (interrupt_flag == 1){ |
DaniusKalv | 10:ee58d712c7fb | 29 | m_mode = mode_buffer; |
DaniusKalv | 10:ee58d712c7fb | 30 | memcpy(line, line_buffer, sizeof(line_buffer)); |
DaniusKalv | 10:ee58d712c7fb | 31 | interrupt_flag = 0; |
DaniusKalv | 10:ee58d712c7fb | 32 | }*/ |
DaniusKalv | 10:ee58d712c7fb | 33 | pc.printf("\r\nMode = %i", m_mode); |
DaniusKalv | 10:ee58d712c7fb | 34 | if (strlen(line) > 0 && m_mode == 0){ |
DaniusKalv | 6:76b89d8b62a0 | 35 | led = 0; |
DaniusKalv | 5:76dd6da3e640 | 36 | generator.generate(line); |
DaniusKalv | 6:76b89d8b62a0 | 37 | memset(line, 0, sizeof(line)); |
DaniusKalv | 5:76dd6da3e640 | 38 | } |
DaniusKalv | 10:ee58d712c7fb | 39 | else if (strlen(line) > 0 && m_mode == 1){ |
DaniusKalv | 10:ee58d712c7fb | 40 | led = 0; |
DaniusKalv | 10:ee58d712c7fb | 41 | memset(line, 0, sizeof(line)); |
DaniusKalv | 10:ee58d712c7fb | 42 | } |
DaniusKalv | 10:ee58d712c7fb | 43 | if(m_mode == 1){ |
DaniusKalv | 10:ee58d712c7fb | 44 | time_t seconds = time(NULL); |
DaniusKalv | 10:ee58d712c7fb | 45 | strftime(buffer, 4, "%H%M", localtime(&seconds)); |
DaniusKalv | 10:ee58d712c7fb | 46 | if ((seconds % 2) == 0) dot = true; |
DaniusKalv | 10:ee58d712c7fb | 47 | else dot = false; |
DaniusKalv | 10:ee58d712c7fb | 48 | display.clock(buffer, dot); |
DaniusKalv | 10:ee58d712c7fb | 49 | } |
DaniusKalv | 10:ee58d712c7fb | 50 | else display.show(); |
DaniusKalv | 5:76dd6da3e640 | 51 | } |
DaniusKalv | 6:76b89d8b62a0 | 52 | } |
DaniusKalv | 6:76b89d8b62a0 | 53 | |
DaniusKalv | 6:76b89d8b62a0 | 54 | void receive(){ |
DaniusKalv | 6:76b89d8b62a0 | 55 | led = 1; |
DaniusKalv | 6:76b89d8b62a0 | 56 | int i, j = 0; |
DaniusKalv | 6:76b89d8b62a0 | 57 | i = 10 * (bluetooth.getc() - 48); |
DaniusKalv | 6:76b89d8b62a0 | 58 | i += bluetooth.getc() - 48; |
DaniusKalv | 10:ee58d712c7fb | 59 | if(i > 0){ |
DaniusKalv | 10:ee58d712c7fb | 60 | mode_buffer = false; |
DaniusKalv | 10:ee58d712c7fb | 61 | do{ |
DaniusKalv | 10:ee58d712c7fb | 62 | line_buffer[j] = bluetooth.getc(); |
DaniusKalv | 10:ee58d712c7fb | 63 | j++; |
DaniusKalv | 10:ee58d712c7fb | 64 | wait(0.0004); |
DaniusKalv | 10:ee58d712c7fb | 65 | } |
DaniusKalv | 10:ee58d712c7fb | 66 | while(bluetooth.readable() && (j < i) && (j < 99)); |
DaniusKalv | 6:76b89d8b62a0 | 67 | } |
DaniusKalv | 10:ee58d712c7fb | 68 | else{ |
DaniusKalv | 10:ee58d712c7fb | 69 | pc.printf("\r\nClock mode"); |
DaniusKalv | 10:ee58d712c7fb | 70 | mode_buffer = true; |
DaniusKalv | 10:ee58d712c7fb | 71 | bluetooth.gets(line, 10); |
DaniusKalv | 10:ee58d712c7fb | 72 | realTime = atoi(line_buffer); |
DaniusKalv | 10:ee58d712c7fb | 73 | set_time(realTime); |
DaniusKalv | 10:ee58d712c7fb | 74 | pc.printf("\r\nTime : %i Mode : %i", realTime, mode_buffer); |
DaniusKalv | 10:ee58d712c7fb | 75 | } |
DaniusKalv | 10:ee58d712c7fb | 76 | interrupt_flag = 1; |
DaniusKalv | 0:06ac39308380 | 77 | } |