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
matrix.cpp@19:2b14139fb19f, 2014-11-19 (annotated)
- Committer:
- DaniusKalv
- Date:
- Wed Nov 19 09:19:28 2014 +0000
- Revision:
- 19:2b14139fb19f
- Parent:
- 17:9889611a4ad1
- Parent:
- 11:996c98ad9d73
- Child:
- 21:db8dadfd7d2a
merged branches
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DaniusKalv | 3:35a47548d29d | 1 | #include "matrix.h" |
DaniusKalv | 16:440f341e7de4 | 2 | #include "numbers.h" |
DaniusKalv | 0:06ac39308380 | 3 | |
DaniusKalv | 3:35a47548d29d | 4 | matrix::matrix(PinName _in1, PinName _in2, PinName _in3, PinName _clr, |
DaniusKalv | 3:35a47548d29d | 5 | PinName _clr1, PinName _clk, PinName _clk1): local("local"), in1(_in1), in2(_in2), |
DaniusKalv | 3:35a47548d29d | 6 | in3(_in3), clr(_clr), clr1(_clr1), clk(_clk), clk1(_clk1), pc(USBTX, USBRX){ |
DaniusKalv | 3:35a47548d29d | 7 | }; |
DaniusKalv | 0:06ac39308380 | 8 | |
DaniusKalv | 3:35a47548d29d | 9 | void matrix::show(){ |
DaniusKalv | 3:35a47548d29d | 10 | char temp[8]; |
DaniusKalv | 3:35a47548d29d | 11 | fp = fopen("/local/out.txt", "r"); |
DaniusKalv | 3:35a47548d29d | 12 | fscanf(fp, "%i", &length); |
DaniusKalv | 3:35a47548d29d | 13 | for (int i = 0; i < 16; i++){ |
DaniusKalv | 3:35a47548d29d | 14 | fscanf(fp, "%s", temp); |
DaniusKalv | 3:35a47548d29d | 15 | for (int j = 0; j < 8; j++){ |
DaniusKalv | 3:35a47548d29d | 16 | display[7 - j][i] = temp[j] - 48; |
DaniusKalv | 0:06ac39308380 | 17 | } |
DaniusKalv | 0:06ac39308380 | 18 | } |
DaniusKalv | 3:35a47548d29d | 19 | for (int i = 15; i < length; i++){ |
DaniusKalv | 3:35a47548d29d | 20 | for (int j = 0; j < 8; j++){ |
DaniusKalv | 3:35a47548d29d | 21 | multiplex(); |
DaniusKalv | 3:35a47548d29d | 22 | } |
DaniusKalv | 3:35a47548d29d | 23 | for (int g = 0; g < 15; g++){ |
DaniusKalv | 3:35a47548d29d | 24 | for (int h = 0; h < 8; h++){ |
DaniusKalv | 3:35a47548d29d | 25 | display[h][g] = display[h][g + 1]; |
DaniusKalv | 0:06ac39308380 | 26 | } |
DaniusKalv | 0:06ac39308380 | 27 | } |
DaniusKalv | 3:35a47548d29d | 28 | fscanf(fp, "%s", temp); |
DaniusKalv | 3:35a47548d29d | 29 | for (int j = 0; j < 8; j++){ |
DaniusKalv | 3:35a47548d29d | 30 | display[j][15] = temp[7 - j] - 48; |
DaniusKalv | 0:06ac39308380 | 31 | } |
DaniusKalv | 16:440f341e7de4 | 32 | } |
DaniusKalv | 3:35a47548d29d | 33 | fclose(fp); |
DaniusKalv | 0:06ac39308380 | 34 | } |
DaniusKalv | 0:06ac39308380 | 35 | |
DaniusKalv | 3:35a47548d29d | 36 | void matrix::clear(){ |
DaniusKalv | 0:06ac39308380 | 37 | in1 = 1; |
DaniusKalv | 0:06ac39308380 | 38 | in2 = 0; |
DaniusKalv | 0:06ac39308380 | 39 | in3 = 0; |
DaniusKalv | 0:06ac39308380 | 40 | clk = 0; |
DaniusKalv | 0:06ac39308380 | 41 | clk1 = 0; |
DaniusKalv | 0:06ac39308380 | 42 | clr = 0; |
DaniusKalv | 0:06ac39308380 | 43 | clr1 = 0; |
DaniusKalv | 0:06ac39308380 | 44 | clr = 1; |
DaniusKalv | 0:06ac39308380 | 45 | clr1 = 1; |
DaniusKalv | 0:06ac39308380 | 46 | } |
DaniusKalv | 0:06ac39308380 | 47 | |
DaniusKalv | 3:35a47548d29d | 48 | void matrix::multiplex(){ |
DaniusKalv | 3:35a47548d29d | 49 | int a[8] = {0, 1, 1, 1, 1, 1, 1, 1}; |
DaniusKalv | 3:35a47548d29d | 50 | clear(); |
DaniusKalv | 0:06ac39308380 | 51 | for (int i = 0; i < 8; i++){ |
DaniusKalv | 3:35a47548d29d | 52 | clear(); |
DaniusKalv | 3:35a47548d29d | 53 | for (int g = 0; g < 8; g++){ |
DaniusKalv | 3:35a47548d29d | 54 | in1 = a[g]; |
DaniusKalv | 3:35a47548d29d | 55 | //pc.printf("%i", a[g]); |
DaniusKalv | 3:35a47548d29d | 56 | clk = 1; |
DaniusKalv | 3:35a47548d29d | 57 | //wait(del); |
DaniusKalv | 3:35a47548d29d | 58 | clk = 0; |
DaniusKalv | 3:35a47548d29d | 59 | //wait(del); |
DaniusKalv | 0:06ac39308380 | 60 | } |
DaniusKalv | 3:35a47548d29d | 61 | //pc.printf("\r\n"); |
DaniusKalv | 3:35a47548d29d | 62 | for (int j = 7; j > (-1); j--){ |
DaniusKalv | 3:35a47548d29d | 63 | in3 = display[i][j]; |
DaniusKalv | 3:35a47548d29d | 64 | in2 = display[i][j + 8]; |
DaniusKalv | 3:35a47548d29d | 65 | //pc.printf("%i", show[i][j]); |
DaniusKalv | 3:35a47548d29d | 66 | clk1 = 1; |
DaniusKalv | 3:35a47548d29d | 67 | //wait(del); |
DaniusKalv | 3:35a47548d29d | 68 | clk1 = 0; |
DaniusKalv | 3:35a47548d29d | 69 | //wait(del); |
DaniusKalv | 3:35a47548d29d | 70 | } |
DaniusKalv | 3:35a47548d29d | 71 | wait(0.001); |
DaniusKalv | 3:35a47548d29d | 72 | //pc.printf("\r\n"); |
DaniusKalv | 3:35a47548d29d | 73 | a[i] = 1; |
DaniusKalv | 3:35a47548d29d | 74 | a[i + 1] = 0; |
DaniusKalv | 3:35a47548d29d | 75 | } |
DaniusKalv | 3:35a47548d29d | 76 | } |
DaniusKalv | 3:35a47548d29d | 77 | |
DaniusKalv | 10:ee58d712c7fb | 78 | void matrix::clock(char *buffer, bool dot){ |
DaniusKalv | 17:9889611a4ad1 | 79 | //pc.printf("\r\nClock %s", buffer); |
DaniusKalv | 16:440f341e7de4 | 80 | |
DaniusKalv | 16:440f341e7de4 | 81 | memset(display, 0, sizeof(display)); |
DaniusKalv | 16:440f341e7de4 | 82 | |
DaniusKalv | 16:440f341e7de4 | 83 | int digit = int(buffer[0]) - 48; |
DaniusKalv | 17:9889611a4ad1 | 84 | //pc.printf("\r\nDigit= %i", digit); |
DaniusKalv | 16:440f341e7de4 | 85 | |
DaniusKalv | 16:440f341e7de4 | 86 | for (int i = 0; i < 3; i++){ |
DaniusKalv | 16:440f341e7de4 | 87 | for (int j = 0; j < 8; j++){ |
DaniusKalv | 17:9889611a4ad1 | 88 | display[j][i] = ((number[i][digit] & (1 << (7 - j))) >> (7 - j)); |
DaniusKalv | 16:440f341e7de4 | 89 | }; |
DaniusKalv | 16:440f341e7de4 | 90 | }; |
DaniusKalv | 16:440f341e7de4 | 91 | |
DaniusKalv | 16:440f341e7de4 | 92 | digit = int(buffer[1]) - 48; |
DaniusKalv | 17:9889611a4ad1 | 93 | //pc.printf("\r\nDigit= %i", digit); |
DaniusKalv | 16:440f341e7de4 | 94 | |
DaniusKalv | 16:440f341e7de4 | 95 | for (int i = 4; i < 7; i++){ |
DaniusKalv | 16:440f341e7de4 | 96 | for (int j = 0; j < 8; j++){ |
DaniusKalv | 17:9889611a4ad1 | 97 | display[j][i] = ((number[i - 4][digit] & (1 << (7 - j))) >> (7 - j)); |
DaniusKalv | 16:440f341e7de4 | 98 | }; |
DaniusKalv | 16:440f341e7de4 | 99 | }; |
DaniusKalv | 16:440f341e7de4 | 100 | |
DaniusKalv | 16:440f341e7de4 | 101 | digit = int(buffer[2]) - 48; |
DaniusKalv | 17:9889611a4ad1 | 102 | //pc.printf("\r\nDigit= %i", digit); |
DaniusKalv | 16:440f341e7de4 | 103 | |
DaniusKalv | 16:440f341e7de4 | 104 | for (int i = 9; i < 12; i++){ |
DaniusKalv | 16:440f341e7de4 | 105 | for (int j = 0; j < 8; j++){ |
DaniusKalv | 17:9889611a4ad1 | 106 | display[j][i] = ((number[i - 9][digit] & (1 << (7 - j))) >> (7 - j)); |
DaniusKalv | 16:440f341e7de4 | 107 | }; |
DaniusKalv | 16:440f341e7de4 | 108 | }; |
DaniusKalv | 16:440f341e7de4 | 109 | |
DaniusKalv | 16:440f341e7de4 | 110 | digit = int(buffer[3]) - 48; |
DaniusKalv | 17:9889611a4ad1 | 111 | //pc.printf("\r\nDigit= %i", digit); |
DaniusKalv | 16:440f341e7de4 | 112 | |
DaniusKalv | 16:440f341e7de4 | 113 | for (int i = 13; i < 16; i++){ |
DaniusKalv | 16:440f341e7de4 | 114 | for (int j = 0; j < 8; j++){ |
DaniusKalv | 17:9889611a4ad1 | 115 | display[j][i] = ((number[i - 13][digit] & (1 << (7 - j))) >> (7 - j)); |
DaniusKalv | 16:440f341e7de4 | 116 | }; |
DaniusKalv | 16:440f341e7de4 | 117 | }; |
DaniusKalv | 16:440f341e7de4 | 118 | |
DaniusKalv | 17:9889611a4ad1 | 119 | if (dot) display[6][7] = 1; |
DaniusKalv | 17:9889611a4ad1 | 120 | //see(); |
DaniusKalv | 17:9889611a4ad1 | 121 | for (int i = 0; i < 10; i++) multiplex(); |
DaniusKalv | 17:9889611a4ad1 | 122 | //while (!pc.getc()); |
DaniusKalv | 10:ee58d712c7fb | 123 | }; |
DaniusKalv | 10:ee58d712c7fb | 124 | |
DaniusKalv | 17:9889611a4ad1 | 125 | void matrix::see(){ |
DaniusKalv | 17:9889611a4ad1 | 126 | pc.printf("\r\n"); |
DaniusKalv | 17:9889611a4ad1 | 127 | for (int i = 0; i < 8; i++){ |
DaniusKalv | 17:9889611a4ad1 | 128 | for (int j = 0; j < 16 ; j++){ |
DaniusKalv | 17:9889611a4ad1 | 129 | pc.printf("%i ", display[i][j]); |
DaniusKalv | 17:9889611a4ad1 | 130 | } |
DaniusKalv | 17:9889611a4ad1 | 131 | pc.printf("\r\n"); |
DaniusKalv | 17:9889611a4ad1 | 132 | } |
DaniusKalv | 17:9889611a4ad1 | 133 | pc.printf("\r\n"); |
DaniusKalv | 19:2b14139fb19f | 134 | } |