Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
matrix.cpp@10:ee58d712c7fb, 2014-11-02 (annotated)
- Committer:
- DaniusKalv
- Date:
- Sun Nov 02 18:15:48 2014 +0000
- Revision:
- 10:ee58d712c7fb
- Parent:
- 6:76b89d8b62a0
- Child:
- 11:996c98ad9d73
- Child:
- 13:96590015edd8
Fucking interrupt messes up variables, better use thread
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DaniusKalv | 3:35a47548d29d | 1 | #include "matrix.h" |
DaniusKalv | 0:06ac39308380 | 2 | #include "mbed.h" |
DaniusKalv | 6:76b89d8b62a0 | 3 | //#include "rtos.h" |
DaniusKalv | 0:06ac39308380 | 4 | |
DaniusKalv | 3:35a47548d29d | 5 | matrix::matrix(PinName _in1, PinName _in2, PinName _in3, PinName _clr, |
DaniusKalv | 3:35a47548d29d | 6 | PinName _clr1, PinName _clk, PinName _clk1): local("local"), in1(_in1), in2(_in2), |
DaniusKalv | 3:35a47548d29d | 7 | in3(_in3), clr(_clr), clr1(_clr1), clk(_clk), clk1(_clk1), pc(USBTX, USBRX){ |
DaniusKalv | 3:35a47548d29d | 8 | }; |
DaniusKalv | 0:06ac39308380 | 9 | |
DaniusKalv | 3:35a47548d29d | 10 | void matrix::show(){ |
DaniusKalv | 3:35a47548d29d | 11 | char temp[8]; |
DaniusKalv | 3:35a47548d29d | 12 | fp = fopen("/local/out.txt", "r"); |
DaniusKalv | 3:35a47548d29d | 13 | fscanf(fp, "%i", &length); |
DaniusKalv | 3:35a47548d29d | 14 | for (int i = 0; i < 16; i++){ |
DaniusKalv | 3:35a47548d29d | 15 | fscanf(fp, "%s", temp); |
DaniusKalv | 3:35a47548d29d | 16 | for (int j = 0; j < 8; j++){ |
DaniusKalv | 3:35a47548d29d | 17 | display[7 - j][i] = temp[j] - 48; |
DaniusKalv | 0:06ac39308380 | 18 | } |
DaniusKalv | 0:06ac39308380 | 19 | } |
DaniusKalv | 3:35a47548d29d | 20 | for (int i = 15; i < length; i++){ |
DaniusKalv | 3:35a47548d29d | 21 | for (int j = 0; j < 8; j++){ |
DaniusKalv | 3:35a47548d29d | 22 | multiplex(); |
DaniusKalv | 10:ee58d712c7fb | 23 | clear(); |
DaniusKalv | 3:35a47548d29d | 24 | } |
DaniusKalv | 3:35a47548d29d | 25 | for (int g = 0; g < 15; g++){ |
DaniusKalv | 3:35a47548d29d | 26 | for (int h = 0; h < 8; h++){ |
DaniusKalv | 3:35a47548d29d | 27 | display[h][g] = display[h][g + 1]; |
DaniusKalv | 0:06ac39308380 | 28 | } |
DaniusKalv | 0:06ac39308380 | 29 | } |
DaniusKalv | 3:35a47548d29d | 30 | fscanf(fp, "%s", temp); |
DaniusKalv | 3:35a47548d29d | 31 | for (int j = 0; j < 8; j++){ |
DaniusKalv | 3:35a47548d29d | 32 | display[j][15] = temp[7 - j] - 48; |
DaniusKalv | 0:06ac39308380 | 33 | } |
DaniusKalv | 0:06ac39308380 | 34 | } |
DaniusKalv | 4:de56a118e704 | 35 | //Thread thread(led_thread); |
DaniusKalv | 3:35a47548d29d | 36 | fclose(fp); |
DaniusKalv | 0:06ac39308380 | 37 | } |
DaniusKalv | 0:06ac39308380 | 38 | |
DaniusKalv | 3:35a47548d29d | 39 | void matrix::clear(){ |
DaniusKalv | 0:06ac39308380 | 40 | in1 = 1; |
DaniusKalv | 0:06ac39308380 | 41 | in2 = 0; |
DaniusKalv | 0:06ac39308380 | 42 | in3 = 0; |
DaniusKalv | 0:06ac39308380 | 43 | clk = 0; |
DaniusKalv | 0:06ac39308380 | 44 | clk1 = 0; |
DaniusKalv | 0:06ac39308380 | 45 | clr = 0; |
DaniusKalv | 0:06ac39308380 | 46 | clr1 = 0; |
DaniusKalv | 0:06ac39308380 | 47 | clr = 1; |
DaniusKalv | 0:06ac39308380 | 48 | clr1 = 1; |
DaniusKalv | 0:06ac39308380 | 49 | } |
DaniusKalv | 0:06ac39308380 | 50 | |
DaniusKalv | 3:35a47548d29d | 51 | void matrix::multiplex(){ |
DaniusKalv | 3:35a47548d29d | 52 | int a[8] = {0, 1, 1, 1, 1, 1, 1, 1}; |
DaniusKalv | 3:35a47548d29d | 53 | clear(); |
DaniusKalv | 0:06ac39308380 | 54 | for (int i = 0; i < 8; i++){ |
DaniusKalv | 3:35a47548d29d | 55 | clear(); |
DaniusKalv | 3:35a47548d29d | 56 | for (int g = 0; g < 8; g++){ |
DaniusKalv | 3:35a47548d29d | 57 | in1 = a[g]; |
DaniusKalv | 3:35a47548d29d | 58 | //pc.printf("%i", a[g]); |
DaniusKalv | 3:35a47548d29d | 59 | clk = 1; |
DaniusKalv | 3:35a47548d29d | 60 | //wait(del); |
DaniusKalv | 3:35a47548d29d | 61 | clk = 0; |
DaniusKalv | 3:35a47548d29d | 62 | //wait(del); |
DaniusKalv | 0:06ac39308380 | 63 | } |
DaniusKalv | 3:35a47548d29d | 64 | //pc.printf("\r\n"); |
DaniusKalv | 3:35a47548d29d | 65 | for (int j = 7; j > (-1); j--){ |
DaniusKalv | 3:35a47548d29d | 66 | in3 = display[i][j]; |
DaniusKalv | 3:35a47548d29d | 67 | in2 = display[i][j + 8]; |
DaniusKalv | 3:35a47548d29d | 68 | //pc.printf("%i", show[i][j]); |
DaniusKalv | 3:35a47548d29d | 69 | clk1 = 1; |
DaniusKalv | 3:35a47548d29d | 70 | //wait(del); |
DaniusKalv | 3:35a47548d29d | 71 | clk1 = 0; |
DaniusKalv | 3:35a47548d29d | 72 | //wait(del); |
DaniusKalv | 3:35a47548d29d | 73 | } |
DaniusKalv | 3:35a47548d29d | 74 | wait(0.001); |
DaniusKalv | 3:35a47548d29d | 75 | //pc.printf("\r\n"); |
DaniusKalv | 3:35a47548d29d | 76 | a[i] = 1; |
DaniusKalv | 3:35a47548d29d | 77 | a[i + 1] = 0; |
DaniusKalv | 3:35a47548d29d | 78 | } |
DaniusKalv | 3:35a47548d29d | 79 | } |
DaniusKalv | 3:35a47548d29d | 80 | |
DaniusKalv | 10:ee58d712c7fb | 81 | void matrix::clock(char *buffer, bool dot){ |
DaniusKalv | 10:ee58d712c7fb | 82 | pc.printf("\r\nClock %s", buffer); |
DaniusKalv | 10:ee58d712c7fb | 83 | }; |
DaniusKalv | 10:ee58d712c7fb | 84 | |
DaniusKalv | 4:de56a118e704 | 85 | /*void led_thread(void const *args){ |
DaniusKalv | 3:35a47548d29d | 86 | while(true){ |
DaniusKalv | 3:35a47548d29d | 87 | multiplex(); |
DaniusKalv | 3:35a47548d29d | 88 | } |
DaniusKalv | 4:de56a118e704 | 89 | }*/ |