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
00001 #include "mbed.h" 00002 #include "matrix.h" 00003 #include "text.h" 00004 #include <string> 00005 00006 text generator; 00007 matrix display(p13, p12, p11, p14, p15, p17, p16); 00008 DigitalOut led(LED1); 00009 Serial pc(USBTX, USBRX); 00010 Serial bluetooth(p28,p27); 00011 char line[99]; 00012 char line_buffer[99]; 00013 volatile bool mode_buffer = 0; 00014 volatile uint8_t interrupt_flag = 0; 00015 volatile int realTime; 00016 void receive(); 00017 00018 int main() { 00019 bool m_mode = 0; 00020 char buffer[4]; 00021 bool dot; 00022 pc.baud(115200); 00023 bluetooth.baud(115200); 00024 void (*foo)() = &receive; 00025 bluetooth.attach(foo, Serial::RxIrq); 00026 generator.generate("Hello world!"); 00027 while(true){ 00028 if (interrupt_flag == 1){ 00029 pc.printf("\r\nIn interrupt flag!"); 00030 m_mode = mode_buffer; 00031 memcpy(line, line_buffer, sizeof(line_buffer)); 00032 memset(line_buffer, 0, sizeof(line_buffer)); 00033 interrupt_flag = 0; 00034 } 00035 pc.printf("\r\nMode = %i", m_mode); 00036 if (strlen(line) > 0 && m_mode == 0 && interrupt_flag == 0){ 00037 led = 0; 00038 generator.generate(line); 00039 memset(line, 0, sizeof(line)); 00040 } 00041 else if (strlen(line) > 0 && m_mode == 1 && interrupt_flag == 0){ 00042 led = 0; 00043 memset(line, 0, sizeof(line)); 00044 } 00045 if(m_mode == 1 && interrupt_flag == 0){ 00046 time_t seconds = time(NULL); 00047 strftime(buffer, 4, "%H%M", localtime(&seconds)); 00048 if ((seconds % 2) == 0) dot = true; 00049 else dot = false; 00050 display.clock(buffer, dot); 00051 } 00052 else if (interrupt_flag == 0) display.show(); 00053 //wait(0.1); 00054 } 00055 } 00056 00057 void receive(){ 00058 led = 1; 00059 int i, j = 0; 00060 i = 10 * (bluetooth.getc() - 48); 00061 i += bluetooth.getc() - 48; 00062 if(i > 0){ 00063 mode_buffer = false; 00064 do{ 00065 line_buffer[j] = bluetooth.getc(); 00066 j++; 00067 wait(0.0001); 00068 } 00069 while(bluetooth.readable() && (j < i) && (j < 99)); 00070 } 00071 else{ 00072 mode_buffer = true; 00073 for (int i = 0; i < 10; i++){ 00074 line_buffer[i] = bluetooth.getc(); 00075 wait(0.0001); 00076 } 00077 realTime = atoi(line_buffer); 00078 set_time(realTime); 00079 } 00080 while (bluetooth.readable()){ 00081 bluetooth.getc(); 00082 } 00083 interrupt_flag = 1; 00084 }
Generated on Wed Jul 13 2022 22:58:20 by 1.7.2