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
text.cpp@7:ca5ed7936472, 2014-10-31 (annotated)
- Committer:
- DaniusKalv
- Date:
- Fri Oct 31 10:49:39 2014 +0000
- Revision:
- 7:ca5ed7936472
- Parent:
- 6:76b89d8b62a0
- Child:
- 8:f74b8d6f00d0
Added letters.h file, which includes binary representations of each letter
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DaniusKalv | 2:3cc1e2dec7a2 | 1 | #include "text.h" |
DaniusKalv | 2:3cc1e2dec7a2 | 2 | #include "mbed.h" |
DaniusKalv | 7:ca5ed7936472 | 3 | #include "letters.h" |
DaniusKalv | 2:3cc1e2dec7a2 | 4 | |
DaniusKalv | 3:35a47548d29d | 5 | text::text(): pc(USBTX, USBRX), local("local"){ |
DaniusKalv | 2:3cc1e2dec7a2 | 6 | }; |
DaniusKalv | 2:3cc1e2dec7a2 | 7 | |
DaniusKalv | 2:3cc1e2dec7a2 | 8 | void text::generate(string input){ |
DaniusKalv | 2:3cc1e2dec7a2 | 9 | stringLength = input.length(); |
DaniusKalv | 6:76b89d8b62a0 | 10 | if (stringLength == 0) return; |
DaniusKalv | 2:3cc1e2dec7a2 | 11 | pc.printf("\r\nStarting generation, string length: %i", stringLength); |
DaniusKalv | 3:35a47548d29d | 12 | fp = fopen("/local/out.txt", "w"); |
DaniusKalv | 2:3cc1e2dec7a2 | 13 | pc.printf("\r\nOpened a text file out.txt"); |
DaniusKalv | 2:3cc1e2dec7a2 | 14 | calcLength(input); |
DaniusKalv | 2:3cc1e2dec7a2 | 15 | fprintf(fp, "%i\r\n", length); |
DaniusKalv | 3:35a47548d29d | 16 | for (int i = 0; i < 16; i++){ |
DaniusKalv | 3:35a47548d29d | 17 | fprintf(fp, "00000000\r\n"); |
DaniusKalv | 3:35a47548d29d | 18 | } |
DaniusKalv | 2:3cc1e2dec7a2 | 19 | for (int i = 0; i < stringLength; i++){ |
DaniusKalv | 2:3cc1e2dec7a2 | 20 | pc.printf("\r\nTaking letter "); |
DaniusKalv | 2:3cc1e2dec7a2 | 21 | pc.putc(input.at(i)); |
DaniusKalv | 2:3cc1e2dec7a2 | 22 | letters(input.at(i)); |
DaniusKalv | 2:3cc1e2dec7a2 | 23 | pc.printf("\r\nDone with "); |
DaniusKalv | 2:3cc1e2dec7a2 | 24 | pc.putc(input.at(i)); |
DaniusKalv | 2:3cc1e2dec7a2 | 25 | tempCheck(); |
DaniusKalv | 2:3cc1e2dec7a2 | 26 | for (int j = 0; j < letSize; j++){ |
DaniusKalv | 2:3cc1e2dec7a2 | 27 | for (int g = 7; g > (-1); g--){ |
DaniusKalv | 2:3cc1e2dec7a2 | 28 | fprintf(fp, "%i", temp[g][j]); |
DaniusKalv | 2:3cc1e2dec7a2 | 29 | } |
DaniusKalv | 2:3cc1e2dec7a2 | 30 | fprintf(fp,"\r\n"); |
DaniusKalv | 2:3cc1e2dec7a2 | 31 | } |
DaniusKalv | 2:3cc1e2dec7a2 | 32 | fprintf(fp, "00000000\r\n"); |
DaniusKalv | 2:3cc1e2dec7a2 | 33 | } |
DaniusKalv | 2:3cc1e2dec7a2 | 34 | for (int i = 0; i < 15; i++){ |
DaniusKalv | 2:3cc1e2dec7a2 | 35 | fprintf(fp, "00000000\r\n"); |
DaniusKalv | 2:3cc1e2dec7a2 | 36 | } |
DaniusKalv | 2:3cc1e2dec7a2 | 37 | fclose(fp); |
DaniusKalv | 2:3cc1e2dec7a2 | 38 | } |
DaniusKalv | 2:3cc1e2dec7a2 | 39 | |
DaniusKalv | 2:3cc1e2dec7a2 | 40 | void text::letters(char take){ |
DaniusKalv | 7:ca5ed7936472 | 41 | |
DaniusKalv | 2:3cc1e2dec7a2 | 42 | switch (take){ |
DaniusKalv | 2:3cc1e2dec7a2 | 43 | case 'A': |
DaniusKalv | 2:3cc1e2dec7a2 | 44 | letSize = 4; |
DaniusKalv | 7:ca5ed7936472 | 45 | memcpy(temp, letterA, sizeof(letterA)); |
DaniusKalv | 2:3cc1e2dec7a2 | 46 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 47 | case 'B': |
DaniusKalv | 2:3cc1e2dec7a2 | 48 | letSize = 4; |
DaniusKalv | 7:ca5ed7936472 | 49 | memcpy(temp, letterB, sizeof(letterB)); |
DaniusKalv | 2:3cc1e2dec7a2 | 50 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 51 | case 'C': |
DaniusKalv | 2:3cc1e2dec7a2 | 52 | letSize = 4; |
DaniusKalv | 7:ca5ed7936472 | 53 | memcpy(temp, letterC, sizeof(letterC)); |
DaniusKalv | 2:3cc1e2dec7a2 | 54 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 55 | case 'D': |
DaniusKalv | 2:3cc1e2dec7a2 | 56 | letSize = 4; |
DaniusKalv | 7:ca5ed7936472 | 57 | memcpy(temp, letterD, sizeof(letterD)); |
DaniusKalv | 2:3cc1e2dec7a2 | 58 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 59 | case 'E': |
DaniusKalv | 2:3cc1e2dec7a2 | 60 | letSize = 4; |
DaniusKalv | 7:ca5ed7936472 | 61 | memcpy(temp, letterE, sizeof(letterE)); |
DaniusKalv | 2:3cc1e2dec7a2 | 62 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 63 | case 'F': |
DaniusKalv | 2:3cc1e2dec7a2 | 64 | letSize = 4; |
DaniusKalv | 7:ca5ed7936472 | 65 | memcpy(temp, letterF, sizeof(letterF)); |
DaniusKalv | 2:3cc1e2dec7a2 | 66 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 67 | case 'G': |
DaniusKalv | 2:3cc1e2dec7a2 | 68 | letSize = 4; |
DaniusKalv | 7:ca5ed7936472 | 69 | memcpy(temp, letterG, sizeof(letterG)); |
DaniusKalv | 2:3cc1e2dec7a2 | 70 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 71 | case 'H': |
DaniusKalv | 2:3cc1e2dec7a2 | 72 | letSize = 4; |
DaniusKalv | 7:ca5ed7936472 | 73 | memcpy(temp, letterH, sizeof(letterH)); |
DaniusKalv | 2:3cc1e2dec7a2 | 74 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 75 | case 'I': |
DaniusKalv | 2:3cc1e2dec7a2 | 76 | letSize = 1; |
DaniusKalv | 7:ca5ed7936472 | 77 | memcpy(temp, letterI, sizeof(letterI)); |
DaniusKalv | 2:3cc1e2dec7a2 | 78 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 79 | case 'J': |
DaniusKalv | 2:3cc1e2dec7a2 | 80 | letSize = 3; |
DaniusKalv | 7:ca5ed7936472 | 81 | memcpy(temp, letterJ, sizeof(letterJ)); |
DaniusKalv | 2:3cc1e2dec7a2 | 82 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 83 | case 'K': |
DaniusKalv | 2:3cc1e2dec7a2 | 84 | letSize = 4; |
DaniusKalv | 7:ca5ed7936472 | 85 | memcpy(temp, letterK, sizeof(letterK)); |
DaniusKalv | 2:3cc1e2dec7a2 | 86 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 87 | case 'L': |
DaniusKalv | 3:35a47548d29d | 88 | letSize = 4; |
DaniusKalv | 7:ca5ed7936472 | 89 | memcpy(temp, letterL, sizeof(letterL)); |
DaniusKalv | 2:3cc1e2dec7a2 | 90 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 91 | case 'M': |
DaniusKalv | 2:3cc1e2dec7a2 | 92 | letSize = 5; |
DaniusKalv | 7:ca5ed7936472 | 93 | memcpy(temp, letterM, sizeof(letterM)); |
DaniusKalv | 2:3cc1e2dec7a2 | 94 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 95 | case 'N': |
DaniusKalv | 2:3cc1e2dec7a2 | 96 | letSize = 4; |
DaniusKalv | 7:ca5ed7936472 | 97 | memcpy(temp, letterN, sizeof(letterN)); |
DaniusKalv | 2:3cc1e2dec7a2 | 98 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 99 | case 'O': |
DaniusKalv | 2:3cc1e2dec7a2 | 100 | letSize = 4; |
DaniusKalv | 7:ca5ed7936472 | 101 | memcpy(temp, letterO, sizeof(letterO)); |
DaniusKalv | 2:3cc1e2dec7a2 | 102 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 103 | case 'P': |
DaniusKalv | 2:3cc1e2dec7a2 | 104 | letSize = 4; |
DaniusKalv | 7:ca5ed7936472 | 105 | memcpy(temp, letterP, sizeof(letterP)); |
DaniusKalv | 2:3cc1e2dec7a2 | 106 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 107 | case 'R': |
DaniusKalv | 2:3cc1e2dec7a2 | 108 | letSize = 4; |
DaniusKalv | 7:ca5ed7936472 | 109 | memcpy(temp, letterR, sizeof(letterR)); |
DaniusKalv | 2:3cc1e2dec7a2 | 110 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 111 | case 'S': |
DaniusKalv | 2:3cc1e2dec7a2 | 112 | letSize = 4; |
DaniusKalv | 7:ca5ed7936472 | 113 | memcpy(temp, letterS, sizeof(letterS)); |
DaniusKalv | 2:3cc1e2dec7a2 | 114 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 115 | case 'T': |
DaniusKalv | 2:3cc1e2dec7a2 | 116 | letSize = 5; |
DaniusKalv | 7:ca5ed7936472 | 117 | memcpy(temp, letterT, sizeof(letterT)); |
DaniusKalv | 2:3cc1e2dec7a2 | 118 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 119 | case 'U': |
DaniusKalv | 2:3cc1e2dec7a2 | 120 | letSize = 4; |
DaniusKalv | 7:ca5ed7936472 | 121 | memcpy(temp, letterU, sizeof(letterU)); |
DaniusKalv | 2:3cc1e2dec7a2 | 122 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 123 | case 'V': |
DaniusKalv | 2:3cc1e2dec7a2 | 124 | letSize = 5; |
DaniusKalv | 7:ca5ed7936472 | 125 | memcpy(temp, letterV, sizeof(letterV)); |
DaniusKalv | 2:3cc1e2dec7a2 | 126 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 127 | case 'Z': |
DaniusKalv | 2:3cc1e2dec7a2 | 128 | letSize = 4; |
DaniusKalv | 7:ca5ed7936472 | 129 | memcpy(temp, letterZ, sizeof(letterZ)); |
DaniusKalv | 2:3cc1e2dec7a2 | 130 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 131 | case 'W': |
DaniusKalv | 2:3cc1e2dec7a2 | 132 | letSize = 5; |
DaniusKalv | 7:ca5ed7936472 | 133 | memcpy(temp, letterW, sizeof(letterW)); |
DaniusKalv | 2:3cc1e2dec7a2 | 134 | break; |
DaniusKalv | 6:76b89d8b62a0 | 135 | case 'Y': |
DaniusKalv | 6:76b89d8b62a0 | 136 | letSize = 5; |
DaniusKalv | 7:ca5ed7936472 | 137 | memcpy(temp, letterY, sizeof(letterY)); |
DaniusKalv | 6:76b89d8b62a0 | 138 | break; |
DaniusKalv | 6:76b89d8b62a0 | 139 | case 'X': |
DaniusKalv | 6:76b89d8b62a0 | 140 | letSize = 5; |
DaniusKalv | 7:ca5ed7936472 | 141 | memcpy(temp, letterX, sizeof(letterX)); |
DaniusKalv | 6:76b89d8b62a0 | 142 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 143 | case ' ': |
DaniusKalv | 2:3cc1e2dec7a2 | 144 | letSize = 3; |
DaniusKalv | 7:ca5ed7936472 | 145 | memcpy(temp, letterGap, sizeof(letterGap)); |
DaniusKalv | 2:3cc1e2dec7a2 | 146 | break; |
DaniusKalv | 2:3cc1e2dec7a2 | 147 | default : |
DaniusKalv | 2:3cc1e2dec7a2 | 148 | letSize = 1; |
DaniusKalv | 7:ca5ed7936472 | 149 | memcpy(temp, letterDef, sizeof(letterDef)); |
DaniusKalv | 2:3cc1e2dec7a2 | 150 | } |
DaniusKalv | 2:3cc1e2dec7a2 | 151 | } |
DaniusKalv | 2:3cc1e2dec7a2 | 152 | |
DaniusKalv | 2:3cc1e2dec7a2 | 153 | void text::tempCheck(){ |
DaniusKalv | 2:3cc1e2dec7a2 | 154 | for (int i = 0; i < 5; i++){ |
DaniusKalv | 2:3cc1e2dec7a2 | 155 | pc.printf("\r\n"); |
DaniusKalv | 2:3cc1e2dec7a2 | 156 | for (int j = 7; j > (-1); j--){ |
DaniusKalv | 2:3cc1e2dec7a2 | 157 | pc.printf("%i", temp[j][i]); |
DaniusKalv | 2:3cc1e2dec7a2 | 158 | } |
DaniusKalv | 2:3cc1e2dec7a2 | 159 | } |
DaniusKalv | 2:3cc1e2dec7a2 | 160 | } |
DaniusKalv | 2:3cc1e2dec7a2 | 161 | |
DaniusKalv | 2:3cc1e2dec7a2 | 162 | void text::calcLength(string input){ |
DaniusKalv | 2:3cc1e2dec7a2 | 163 | length = 0; |
DaniusKalv | 2:3cc1e2dec7a2 | 164 | for (int i = 0; i < stringLength; i++){ |
DaniusKalv | 2:3cc1e2dec7a2 | 165 | letters(input.at(i)); |
DaniusKalv | 2:3cc1e2dec7a2 | 166 | length += letSize + 1; |
DaniusKalv | 2:3cc1e2dec7a2 | 167 | } |
DaniusKalv | 3:35a47548d29d | 168 | length += 31; |
DaniusKalv | 2:3cc1e2dec7a2 | 169 | } |