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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers text.cpp Source File

text.cpp

00001 #include "text.h"
00002 #include "mbed.h"
00003 #include "letters.h"
00004 
00005 text::text(): pc(USBTX, USBRX), local("local"){
00006 };
00007 
00008 void text::generate(string input){
00009     stringLength = input.length();
00010     if (stringLength == 0) return;
00011     pc.printf("\r\nStarting generation, string length: %i", stringLength);
00012     fp = fopen("/local/out.txt", "w");
00013     pc.printf("\r\nOpened a text file out.txt");
00014     calcLength(input);
00015     fprintf(fp, "%i\r\n", length);
00016     for (int i = 0; i < 16; i++){
00017         fprintf(fp, "%02x\r\n", 0x00);
00018     }
00019     for (int i = 0; i < stringLength; i++){
00020         pc.printf("\r\nTaking letter ");
00021         pc.putc(input.at(i));
00022         letters(input.at(i));
00023         pc.printf("\r\nDone with ");
00024         pc.putc(input.at(i));
00025         tempCheck();
00026         for (int j = 7; j >= (8 - letSize); j--){
00027             uint8_t hex = 0;
00028             for (int g = 7; g >= 0; g--){ 
00029                 //fprintf(fp, "%i", ((temp[g] & (1 << j)) >> j));
00030                 hex |= (((temp[g] & (1 << j)) >> j) << g);
00031             }
00032             fprintf(fp,"%02x\r\n", hex);
00033         } 
00034         fprintf(fp, "%02x\r\n", 0x00);    
00035     } 
00036     for (int i = 0; i < 15; i++){
00037         fprintf(fp, "%02x\r\n", 0x00);
00038     }
00039     pc.printf("\r\n%02x", 0x3e);
00040     fprintf(fp, "%02x\r\n", 0x3e);
00041     fclose(fp);   
00042 }
00043 
00044 void text::letters(char take){
00045     
00046     switch (take){
00047         case 'A': 
00048             letSize = 4;
00049             memcpy(temp, letterA, sizeof(letterA));
00050             break;
00051         case 'B':
00052             letSize = 4;
00053             memcpy(temp, letterB, sizeof(letterB));
00054             break;
00055         case 'C':
00056             letSize = 4;
00057             memcpy(temp, letterC, sizeof(letterC));
00058             break;
00059         case 'D':
00060             letSize = 4;
00061             memcpy(temp, letterD, sizeof(letterD));
00062             break;
00063         case 'E':
00064             letSize = 4;
00065             memcpy(temp, letterE, sizeof(letterE));
00066             break;
00067         case 'F':
00068             letSize = 4;
00069             memcpy(temp, letterF, sizeof(letterF));
00070             break;
00071         case 'G':
00072             letSize = 4;
00073             memcpy(temp, letterG, sizeof(letterG));
00074             break;
00075         case 'H':
00076             letSize = 4;
00077             memcpy(temp, letterH, sizeof(letterH));
00078             break;
00079         case 'I':
00080             letSize = 1;
00081             memcpy(temp, letterI, sizeof(letterI));
00082             break;
00083         case 'J':
00084             letSize = 3;
00085             memcpy(temp, letterJ, sizeof(letterJ));
00086             break;
00087         case 'K':
00088             letSize = 4;
00089             memcpy(temp, letterK, sizeof(letterK));
00090             break;
00091         case 'L':
00092             letSize = 4;
00093             memcpy(temp, letterL, sizeof(letterL));
00094             break;
00095         case 'M':
00096             letSize = 5;
00097             memcpy(temp, letterM, sizeof(letterM));
00098             break;
00099         case 'N':
00100             letSize = 4;
00101             memcpy(temp, letterN, sizeof(letterN));
00102             break;
00103         case 'O':
00104             letSize = 4;
00105             memcpy(temp, letterO, sizeof(letterO));
00106             break;
00107         case 'P':
00108             letSize = 4;
00109             memcpy(temp, letterP, sizeof(letterP));
00110             break;
00111         case 'Q':
00112             letSize = 5;
00113             memcpy(temp, letterQ, sizeof(letterQ));
00114             break;
00115         case 'R':
00116             letSize = 4;
00117             memcpy(temp, letterR, sizeof(letterR));
00118             break;
00119         case 'S':
00120             letSize = 4;
00121             memcpy(temp, letterS, sizeof(letterS));
00122             break;
00123         case 'T':
00124             letSize = 5;
00125             memcpy(temp, letterT, sizeof(letterT));
00126             break;
00127         case 'U':
00128             letSize = 4;
00129             memcpy(temp, letterU, sizeof(letterU));
00130             break;
00131         case 'V':
00132             letSize = 5;
00133             memcpy(temp, letterV, sizeof(letterV));
00134             break;
00135         case 'W':
00136             letSize = 5;
00137             memcpy(temp, letterW, sizeof(letterW));
00138             break;
00139         case 'X':
00140             letSize = 5;
00141             memcpy(temp, letterX, sizeof(letterX));
00142             break;
00143         case 'Y':
00144             letSize = 5;
00145             memcpy(temp, letterY, sizeof(letterY));
00146             break;
00147         case 'Z':
00148             letSize = 4;
00149             memcpy(temp, letterZ, sizeof(letterZ));
00150             break;
00151         case 'a': 
00152             letSize = 4;
00153             memcpy(temp, lettera, sizeof(lettera));
00154             break;
00155         case 'b':
00156             letSize = 4;
00157             memcpy(temp, letterb, sizeof(letterb));
00158             break;
00159         case 'c':
00160             letSize = 4;
00161             memcpy(temp, letterc, sizeof(letterc));
00162             break;
00163         case 'd':
00164             letSize = 4;
00165             memcpy(temp, letterd, sizeof(letterd));
00166             break;
00167         case 'e':
00168             letSize = 4;
00169             memcpy(temp, lettere, sizeof(lettere));
00170             break;
00171         case 'f':
00172             letSize = 4;
00173             memcpy(temp, letterf, sizeof(letterf));
00174             break;
00175         case 'g':
00176             letSize = 4;
00177             memcpy(temp, letterg, sizeof(letterg));
00178             break;
00179         case 'h':
00180             letSize = 4;
00181             memcpy(temp, letterh, sizeof(letterh));
00182             break;
00183         case 'i':
00184             letSize = 1;
00185             memcpy(temp, letteri, sizeof(letteri));
00186             break;
00187         case 'j':
00188             letSize = 3;
00189             memcpy(temp, letterj, sizeof(letterj));
00190             break;
00191         case 'k':
00192             letSize = 4;
00193             memcpy(temp, letterk, sizeof(letterk));
00194             break;
00195         case 'l':
00196             letSize = 1;
00197             memcpy(temp, letterl, sizeof(letterl));
00198             break;
00199         case 'm':
00200             letSize = 5;
00201             memcpy(temp, letterm, sizeof(letterm));
00202             break;
00203         case 'n':
00204             letSize = 4;
00205             memcpy(temp, lettern, sizeof(lettern));
00206             break;
00207         case 'o':
00208             letSize = 4;
00209             memcpy(temp, lettero, sizeof(lettero));
00210             break;
00211         case 'p':
00212             letSize = 4;
00213             memcpy(temp, letterp, sizeof(letterp));
00214             break;
00215         case 'q':
00216             letSize = 4;
00217             memcpy(temp, letterq, sizeof(letterq));
00218             break;
00219         case 'r':
00220             letSize = 4;
00221             memcpy(temp, letterr, sizeof(letterr));
00222             break;
00223         case 's':
00224             letSize = 4;
00225             memcpy(temp, letter_s, sizeof(letter_s));
00226             break;
00227         case 't':
00228             letSize = 4;
00229             memcpy(temp, lettert, sizeof(lettert));
00230             break;
00231         case 'u':
00232             letSize = 4;
00233             memcpy(temp, letteru, sizeof(letteru));
00234             break;
00235         case 'v':
00236             letSize = 5;
00237             memcpy(temp, letterv, sizeof(letterv));
00238             break;
00239         case 'w':
00240             letSize = 5;
00241             memcpy(temp, letterw, sizeof(letterw));
00242             break;
00243         case 'x':
00244             letSize = 4;
00245             memcpy(temp, letterx, sizeof(letterx));
00246             break;
00247         case 'y':
00248             letSize = 4;
00249             memcpy(temp, lettery, sizeof(lettery));
00250             break;
00251         case 'z':
00252             letSize = 4;
00253             memcpy(temp, letterz, sizeof(letterz));
00254             break;
00255         case ' ':
00256             letSize = 3;
00257             memcpy(temp, letterGap, sizeof(letterGap));
00258             break;
00259         default :
00260             letSize = 1;
00261             memcpy(temp, letterDef, sizeof(letterDef));
00262     }
00263 }    
00264 
00265 void text::tempCheck(){
00266     pc.printf("\r\n");
00267     for (int i = 0; i < 8; i++){
00268         pc.printf("0x%02x ", temp[i]);
00269     }
00270     pc.printf("\r\n");
00271 }
00272 
00273 void text::calcLength(string input){
00274     length = 0;
00275     for (int i = 0; i < stringLength; i++){
00276         letters(input.at(i));
00277         length += letSize + 1;
00278     }   
00279     length += 31;  
00280 }