LED CUBE TEAM / Mbed 2 deprecated MAtrix

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }*/