Nick Lowyck / Mbed 2 deprecated Ledcube

Dependencies:   mbed mbed-rtos

Committer:
sNICKer1103
Date:
Wed Apr 30 11:49:26 2014 +0000
Revision:
1:53b8c6b13010
Parent:
0:333c9abcd919
Child:
2:f2700008c9d9
Classes added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sNICKer1103 0:333c9abcd919 1 #include "mbed.h"
sNICKer1103 0:333c9abcd919 2
sNICKer1103 0:333c9abcd919 3 bool printed = false;
sNICKer1103 1:53b8c6b13010 4 bool testprinted = false;
sNICKer1103 0:333c9abcd919 5 char layer = 1;
sNICKer1103 0:333c9abcd919 6 bool first = true;
sNICKer1103 0:333c9abcd919 7 int success = 1;
sNICKer1103 0:333c9abcd919 8
sNICKer1103 1:53b8c6b13010 9 int counter1 = 0;
sNICKer1103 1:53b8c6b13010 10 int counter2 = 0;
sNICKer1103 1:53b8c6b13010 11 int counter3 = 0;
sNICKer1103 0:333c9abcd919 12
sNICKer1103 1:53b8c6b13010 13 char ledexample[8][8][8] = {{{6,0,0,7,7,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,7,7,0,0,7}},
sNICKer1103 1:53b8c6b13010 14 {{7,0,0,7,7,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,7,7,0,0,7}},
sNICKer1103 1:53b8c6b13010 15 {{7,0,0,7,7,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,7,7,0,0,7}},
sNICKer1103 1:53b8c6b13010 16 {{4,0,0,7,7,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,7,7,0,0,3}},
sNICKer1103 1:53b8c6b13010 17 {{4,0,0,7,7,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,7,7,0,0,3}},
sNICKer1103 1:53b8c6b13010 18 {{7,0,0,7,7,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,7,7,0,0,7}},
sNICKer1103 1:53b8c6b13010 19 {{7,0,0,7,7,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,7,7,0,0,7}},
sNICKer1103 1:53b8c6b13010 20 {{7,0,0,7,7,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,7,7,0,0,5}}
sNICKer1103 1:53b8c6b13010 21 };
sNICKer1103 0:333c9abcd919 22
sNICKer1103 1:53b8c6b13010 23 char ledbuffer[8][8][8] = {{{6,0,0,7,7,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,7,7,0,0,7}},
sNICKer1103 1:53b8c6b13010 24 {{7,0,0,7,7,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,7,7,0,0,7}},
sNICKer1103 1:53b8c6b13010 25 {{7,0,0,7,7,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,7,7,0,0,7}},
sNICKer1103 1:53b8c6b13010 26 {{4,0,0,7,7,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,7,7,0,0,3}},
sNICKer1103 1:53b8c6b13010 27 {{4,0,0,7,7,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,7,7,0,0,3}},
sNICKer1103 1:53b8c6b13010 28 {{7,0,0,7,7,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,7,7,0,0,7}},
sNICKer1103 1:53b8c6b13010 29 {{7,0,0,7,7,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,7,7,0,0,7}},
sNICKer1103 1:53b8c6b13010 30 {{7,0,0,7,7,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,0,0,0,0,7},{7,0,0,7,7,0,0,5}}
sNICKer1103 1:53b8c6b13010 31 };
sNICKer1103 0:333c9abcd919 32
sNICKer1103 0:333c9abcd919 33 //matrix (8*8*8): top to bottom, eerst r dan g dan b dan laag (per laag, dus 33 chars)(één char:rij voor één kleur)
sNICKer1103 0:333c9abcd919 34 const char matrix[8][3][8] = {{{18,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,16}},
sNICKer1103 1:53b8c6b13010 35 {{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129}},
sNICKer1103 1:53b8c6b13010 36 {{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129}},
sNICKer1103 1:53b8c6b13010 37 {{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129}},
sNICKer1103 1:53b8c6b13010 38 {{11,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,3}},
sNICKer1103 1:53b8c6b13010 39 {{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129}},
sNICKer1103 1:53b8c6b13010 40 {{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129}},
sNICKer1103 1:53b8c6b13010 41 {{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129},{19,0,0,0,0,0,0,17}}
sNICKer1103 1:53b8c6b13010 42 };
sNICKer1103 1:53b8c6b13010 43
sNICKer1103 1:53b8c6b13010 44 char testrmatrix[8][8] = {{255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 45 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 46 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 47 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 48 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 49 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 50 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 51 {255,255,255,255,255,255,255,255}
sNICKer1103 1:53b8c6b13010 52 };
sNICKer1103 1:53b8c6b13010 53
sNICKer1103 1:53b8c6b13010 54 char testgmatrix[8][8] = {{255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 55 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 56 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 57 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 58 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 59 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 60 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 61 {255,255,255,255,255,255,255,255}
sNICKer1103 1:53b8c6b13010 62 };
sNICKer1103 0:333c9abcd919 63
sNICKer1103 1:53b8c6b13010 64 char testbmatrix[8][8] = {{255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 65 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 66 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 67 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 68 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 69 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 70 {255,255,255,255,255,255,255,255},
sNICKer1103 1:53b8c6b13010 71 {255,255,255,255,255,255,255,255}
sNICKer1103 1:53b8c6b13010 72 };
sNICKer1103 0:333c9abcd919 73
sNICKer1103 1:53b8c6b13010 74 char rmatrix[8][8] = {{3,129,129,129,129,129,129,153},
sNICKer1103 1:53b8c6b13010 75 {3,129,129,129,129,129,129,153},
sNICKer1103 1:53b8c6b13010 76 {153,129,129,129,129,129,129,153},
sNICKer1103 1:53b8c6b13010 77 {153,129,129,129,129,129,129,152},
sNICKer1103 1:53b8c6b13010 78 {153,129,129,129,129,129,129,152},
sNICKer1103 1:53b8c6b13010 79 {153,129,129,129,129,129,129,153},
sNICKer1103 1:53b8c6b13010 80 {153,129,129,129,129,129,129,153},
sNICKer1103 1:53b8c6b13010 81 {153,129,129,129,129,129,129,3}
sNICKer1103 1:53b8c6b13010 82 };
sNICKer1103 1:53b8c6b13010 83
sNICKer1103 1:53b8c6b13010 84 char gmatrix[8][8] = {{25,129,129,129,129,129,129,153},
sNICKer1103 1:53b8c6b13010 85 {153,129,129,129,129,129,129,153},
sNICKer1103 1:53b8c6b13010 86 {153,129,129,129,129,129,129,153},
sNICKer1103 1:53b8c6b13010 87 {25,129,129,129,129,129,129,153},
sNICKer1103 1:53b8c6b13010 88 {25,129,129,129,3,129,129,153},
sNICKer1103 1:53b8c6b13010 89 {153,129,129,129,129,129,129,153},
sNICKer1103 1:53b8c6b13010 90 {153,129,129,129,129,129,129,153},
sNICKer1103 1:53b8c6b13010 91 {2,129,129,129,129,129,129,153}
sNICKer1103 1:53b8c6b13010 92 };
sNICKer1103 0:333c9abcd919 93
sNICKer1103 0:333c9abcd919 94 char bmatrix[8][8] = {{153,129,129,129,129,129,129,153},
sNICKer1103 1:53b8c6b13010 95 {153,129,129,129,129,129,129,153},
sNICKer1103 1:53b8c6b13010 96 {153,129,129,129,129,129,129,153},
sNICKer1103 1:53b8c6b13010 97 {153,129,129,129,129,129,129,152},
sNICKer1103 1:53b8c6b13010 98 {153,129,129,129,129,129,129,152},
sNICKer1103 1:53b8c6b13010 99 {153,129,129,129,129,129,129,153},
sNICKer1103 1:53b8c6b13010 100 {153,129,129,129,129,129,129,153},
sNICKer1103 1:53b8c6b13010 101 {153,129,129,129,129,129,129,3}
sNICKer1103 1:53b8c6b13010 102 };
sNICKer1103 0:333c9abcd919 103
sNICKer1103 0:333c9abcd919 104 SPI spi(p5, NC, p7); // mosi, miso, sclk
sNICKer1103 1:53b8c6b13010 105 I2CSlave slave(p28, p27); //sda, scl
sNICKer1103 0:333c9abcd919 106 DigitalOut latch(p8);
sNICKer1103 0:333c9abcd919 107 //DigitalOut blank(p9);
sNICKer1103 0:333c9abcd919 108 DigitalOut cs(p10);
sNICKer1103 0:333c9abcd919 109 Serial pc(USBTX, USBRX);
sNICKer1103 0:333c9abcd919 110
sNICKer1103 0:333c9abcd919 111 uint8_t reverse_byte(uint8_t byte);
sNICKer1103 1:53b8c6b13010 112 void initialtest();
sNICKer1103 1:53b8c6b13010 113 void sendbuffer();
sNICKer1103 1:53b8c6b13010 114 void modifybuffer();
sNICKer1103 1:53b8c6b13010 115 void torgbmatrix(const char ledm[8][8][8], char rmat[8][8], char gmat[8][8], char bmat[8][8]);
sNICKer1103 0:333c9abcd919 116
sNICKer1103 0:333c9abcd919 117 int main()
sNICKer1103 0:333c9abcd919 118 {
sNICKer1103 0:333c9abcd919 119 spi.format(8,3);
sNICKer1103 0:333c9abcd919 120 spi.frequency(10000000);
sNICKer1103 1:53b8c6b13010 121 slave.address(0xA0); //bevestigen!
sNICKer1103 0:333c9abcd919 122 // blank = 0;
sNICKer1103 0:333c9abcd919 123 latch = 0;
sNICKer1103 0:333c9abcd919 124 cs = 1;
sNICKer1103 0:333c9abcd919 125
sNICKer1103 1:53b8c6b13010 126 for(int i = 0; i < 400; i++) {
sNICKer1103 1:53b8c6b13010 127 initialtest();
sNICKer1103 1:53b8c6b13010 128 }
sNICKer1103 0:333c9abcd919 129
sNICKer1103 0:333c9abcd919 130 while(true) {
sNICKer1103 1:53b8c6b13010 131 if (slave.receive() == I2CSlave::WriteAddressed) {
sNICKer1103 1:53b8c6b13010 132 pc.printf("Waarde ontvangen!\n\r");
sNICKer1103 1:53b8c6b13010 133 modifybuffer();
sNICKer1103 1:53b8c6b13010 134 printed = false;
sNICKer1103 0:333c9abcd919 135 }
sNICKer1103 1:53b8c6b13010 136 sendbuffer();
sNICKer1103 1:53b8c6b13010 137 }//while loop
sNICKer1103 0:333c9abcd919 138 }//end main
sNICKer1103 0:333c9abcd919 139
sNICKer1103 0:333c9abcd919 140 unsigned char reverse_bits(unsigned char b)
sNICKer1103 0:333c9abcd919 141 {
sNICKer1103 0:333c9abcd919 142 return ((b * 0x0802LU & 0x22110LU) | (b * 0x8020LU & 0x88440LU)) * 0x10101LU >> 16;
sNICKer1103 0:333c9abcd919 143 }
sNICKer1103 0:333c9abcd919 144
sNICKer1103 0:333c9abcd919 145 uint8_t reverse_byte(uint8_t byte)
sNICKer1103 0:333c9abcd919 146 {
sNICKer1103 0:333c9abcd919 147 return (__rbit(byte) >> 24) & 0xFF; // reverse a byte in a 32-bit value, and extract the byte
sNICKer1103 0:333c9abcd919 148 }
sNICKer1103 0:333c9abcd919 149
sNICKer1103 1:53b8c6b13010 150 void initialtest()
sNICKer1103 1:53b8c6b13010 151 {
sNICKer1103 1:53b8c6b13010 152 for(int i = 7; i >= 0; i--) { //eerst laag selecteren, SPI zendt normaalgezien MSB first
sNICKer1103 1:53b8c6b13010 153 cs = 0;
sNICKer1103 1:53b8c6b13010 154 spi.write(layer);
sNICKer1103 1:53b8c6b13010 155 cs = 1;
sNICKer1103 1:53b8c6b13010 156 if(!testprinted) pc.printf("%d ", layer);
sNICKer1103 1:53b8c6b13010 157 for(int j = 2; j >= 0; j--) {
sNICKer1103 1:53b8c6b13010 158 for(int k = 7; k >= 0; k--) {
sNICKer1103 1:53b8c6b13010 159 if (j == 2) {
sNICKer1103 1:53b8c6b13010 160 if(!testprinted) pc.printf("%d ", testbmatrix[i][k]);
sNICKer1103 1:53b8c6b13010 161 cs = 0;
sNICKer1103 1:53b8c6b13010 162 spi.write(reverse_byte(testbmatrix[i][k]));
sNICKer1103 1:53b8c6b13010 163 cs = 1;
sNICKer1103 1:53b8c6b13010 164 }
sNICKer1103 1:53b8c6b13010 165
sNICKer1103 1:53b8c6b13010 166 if (j == 1) {
sNICKer1103 1:53b8c6b13010 167 if(!testprinted) pc.printf("%d ", testgmatrix[i][k]);
sNICKer1103 1:53b8c6b13010 168 cs = 0;
sNICKer1103 1:53b8c6b13010 169 spi.write(reverse_byte(gmatrix[i][k]));
sNICKer1103 1:53b8c6b13010 170 cs = 1;
sNICKer1103 1:53b8c6b13010 171 }
sNICKer1103 1:53b8c6b13010 172
sNICKer1103 1:53b8c6b13010 173 if (j == 0) {
sNICKer1103 1:53b8c6b13010 174 if(!testprinted) pc.printf("%d ", testrmatrix[i][k]);
sNICKer1103 1:53b8c6b13010 175 cs = 0;
sNICKer1103 1:53b8c6b13010 176 spi.write(reverse_byte(testrmatrix[i][k]));
sNICKer1103 1:53b8c6b13010 177 cs = 1;
sNICKer1103 1:53b8c6b13010 178 }
sNICKer1103 1:53b8c6b13010 179 }
sNICKer1103 1:53b8c6b13010 180 if(!testprinted) pc.printf(" ");
sNICKer1103 1:53b8c6b13010 181 if(!testprinted) pc.printf("\n\r");
sNICKer1103 1:53b8c6b13010 182
sNICKer1103 1:53b8c6b13010 183 }
sNICKer1103 1:53b8c6b13010 184 if(!testprinted) pc.printf("\n\r");
sNICKer1103 1:53b8c6b13010 185 wait(0.00125); //vragen aan tommy, buffer per laag?
sNICKer1103 1:53b8c6b13010 186
sNICKer1103 1:53b8c6b13010 187 //blank = 1;
sNICKer1103 1:53b8c6b13010 188 latch = 1;
sNICKer1103 1:53b8c6b13010 189 latch = 0;
sNICKer1103 1:53b8c6b13010 190 //blank = 0;
sNICKer1103 1:53b8c6b13010 191
sNICKer1103 1:53b8c6b13010 192 layer = layer << 1;
sNICKer1103 1:53b8c6b13010 193 if(layer == 0) layer = 1;
sNICKer1103 1:53b8c6b13010 194
sNICKer1103 1:53b8c6b13010 195 }//end outer for loop
sNICKer1103 1:53b8c6b13010 196 // latch = 1;
sNICKer1103 1:53b8c6b13010 197 if(!testprinted) pc.printf("\n\r");
sNICKer1103 1:53b8c6b13010 198 testprinted = true;
sNICKer1103 1:53b8c6b13010 199
sNICKer1103 1:53b8c6b13010 200 }
sNICKer1103 1:53b8c6b13010 201
sNICKer1103 1:53b8c6b13010 202 void sendbuffer()
sNICKer1103 1:53b8c6b13010 203 {
sNICKer1103 1:53b8c6b13010 204 for(int i = 7; i >= 0; i--) {
sNICKer1103 1:53b8c6b13010 205 cs = 0;
sNICKer1103 1:53b8c6b13010 206 spi.write(layer);
sNICKer1103 1:53b8c6b13010 207 cs = 1;
sNICKer1103 1:53b8c6b13010 208 if(!printed) pc.printf("%d ", layer);
sNICKer1103 1:53b8c6b13010 209 for(int j = 2; j >= 0; j--) {
sNICKer1103 1:53b8c6b13010 210 for(int k = 7; k >= 0; k--) {
sNICKer1103 1:53b8c6b13010 211 if (j == 2) {
sNICKer1103 1:53b8c6b13010 212 if(!printed) pc.printf("%d ", bmatrix[i][k]);
sNICKer1103 1:53b8c6b13010 213 cs = 0;
sNICKer1103 1:53b8c6b13010 214 spi.write(reverse_byte(bmatrix[i][k]));
sNICKer1103 1:53b8c6b13010 215 cs = 1;
sNICKer1103 1:53b8c6b13010 216 }
sNICKer1103 1:53b8c6b13010 217
sNICKer1103 1:53b8c6b13010 218 if (j == 1) {
sNICKer1103 1:53b8c6b13010 219 if(!printed) pc.printf("%d ", gmatrix[i][k]);
sNICKer1103 1:53b8c6b13010 220 cs = 0;
sNICKer1103 1:53b8c6b13010 221 spi.write(reverse_byte(gmatrix[i][k]));
sNICKer1103 1:53b8c6b13010 222 cs = 1;
sNICKer1103 1:53b8c6b13010 223 }
sNICKer1103 1:53b8c6b13010 224
sNICKer1103 1:53b8c6b13010 225 if (j == 0) {
sNICKer1103 1:53b8c6b13010 226 if(!printed) pc.printf("%d ", rmatrix[i][k]);
sNICKer1103 1:53b8c6b13010 227 cs = 0;
sNICKer1103 1:53b8c6b13010 228 spi.write(reverse_byte(rmatrix[i][k]));
sNICKer1103 1:53b8c6b13010 229 cs = 1;
sNICKer1103 1:53b8c6b13010 230 }
sNICKer1103 1:53b8c6b13010 231 }
sNICKer1103 1:53b8c6b13010 232 if(!printed) pc.printf(" ");
sNICKer1103 1:53b8c6b13010 233 if(!printed) pc.printf("\n\r");
sNICKer1103 1:53b8c6b13010 234
sNICKer1103 1:53b8c6b13010 235 }
sNICKer1103 1:53b8c6b13010 236 if(!printed) pc.printf("\n\r");
sNICKer1103 1:53b8c6b13010 237 wait(0.00125); //vragen aan tommy, buffer per laag?
sNICKer1103 1:53b8c6b13010 238
sNICKer1103 1:53b8c6b13010 239 //blank = 1;
sNICKer1103 1:53b8c6b13010 240 latch = 1;
sNICKer1103 1:53b8c6b13010 241 latch = 0;
sNICKer1103 1:53b8c6b13010 242 //blank = 0;
sNICKer1103 1:53b8c6b13010 243
sNICKer1103 1:53b8c6b13010 244 layer = layer << 1;
sNICKer1103 1:53b8c6b13010 245 if(layer == 0) layer = 1;
sNICKer1103 1:53b8c6b13010 246
sNICKer1103 1:53b8c6b13010 247 }//end outer for loop
sNICKer1103 1:53b8c6b13010 248 // latch = 1;
sNICKer1103 1:53b8c6b13010 249 if(!printed) pc.printf("\n\r");
sNICKer1103 1:53b8c6b13010 250 printed = true;
sNICKer1103 1:53b8c6b13010 251 }
sNICKer1103 1:53b8c6b13010 252
sNICKer1103 1:53b8c6b13010 253 void modifybuffer()
sNICKer1103 1:53b8c6b13010 254 {
sNICKer1103 1:53b8c6b13010 255 char ledcolor;
sNICKer1103 1:53b8c6b13010 256 while(!((counter1 == 8) && (counter2 == 0) && (counter3 == 1))) {
sNICKer1103 1:53b8c6b13010 257 ledcolor = slave.read();
sNICKer1103 1:53b8c6b13010 258 if (ledcolor == 8) {
sNICKer1103 1:53b8c6b13010 259 counter1 = 0;
sNICKer1103 1:53b8c6b13010 260 counter2 = 0;
sNICKer1103 1:53b8c6b13010 261 counter3 = 0;
sNICKer1103 1:53b8c6b13010 262 } else {
sNICKer1103 1:53b8c6b13010 263 if (ledcolor == 9) {
sNICKer1103 1:53b8c6b13010 264 torgbmatrix(ledbuffer, rmatrix, gmatrix, bmatrix);
sNICKer1103 1:53b8c6b13010 265 break;
sNICKer1103 1:53b8c6b13010 266 } else {
sNICKer1103 1:53b8c6b13010 267 ledbuffer[counter1][counter2][counter3] = ledcolor;
sNICKer1103 1:53b8c6b13010 268
sNICKer1103 1:53b8c6b13010 269 if (counter3 < 7) {
sNICKer1103 1:53b8c6b13010 270 counter3++;
sNICKer1103 1:53b8c6b13010 271 } else {
sNICKer1103 1:53b8c6b13010 272 if (counter2 < 7) {
sNICKer1103 1:53b8c6b13010 273 counter2++;
sNICKer1103 1:53b8c6b13010 274 counter3 = 0;
sNICKer1103 1:53b8c6b13010 275 } else {
sNICKer1103 1:53b8c6b13010 276 if (counter1 < 7) {
sNICKer1103 1:53b8c6b13010 277 counter1++;
sNICKer1103 1:53b8c6b13010 278 counter2 = 0;
sNICKer1103 1:53b8c6b13010 279 counter3 = 0;
sNICKer1103 1:53b8c6b13010 280 }
sNICKer1103 1:53b8c6b13010 281 }
sNICKer1103 1:53b8c6b13010 282 }
sNICKer1103 1:53b8c6b13010 283 }
sNICKer1103 1:53b8c6b13010 284 }
sNICKer1103 1:53b8c6b13010 285 }
sNICKer1103 1:53b8c6b13010 286 }
sNICKer1103 1:53b8c6b13010 287
sNICKer1103 1:53b8c6b13010 288 void torgbmatrix(const char ledm[8][8][8], char rmat[8][8], char gmat[8][8], char bmat[8][8])
sNICKer1103 0:333c9abcd919 289 {
sNICKer1103 0:333c9abcd919 290 for(int i = 0; i < 8; i++) { //ledmatrix (afkomstig van raspberry pi) omzetten naar rgb matrix (voor ledcube)
sNICKer1103 0:333c9abcd919 291 for(int j = 0; j < 8; j++) {
sNICKer1103 0:333c9abcd919 292 char weight = 128;
sNICKer1103 0:333c9abcd919 293 for(int k = 0; k < 8; k++) { //bij de rmatrix, gmatrix en bmatrix op de juiste plaatsen de juiste gewichten optellen indien nodig
sNICKer1103 0:333c9abcd919 294 char digitbuffer = ledm[i][j][k]; //bv voor rmatrix alleen gewicht bij optellen indien er een 1 op de derde positie is (binair)
sNICKer1103 1:53b8c6b13010 295 if(k == 0) { //anders gezegd: als het getal in de ledmatrix groter of gelijk aan 4 is.
sNICKer1103 0:333c9abcd919 296 rmat[i][j] = 0; //initialisatie
sNICKer1103 0:333c9abcd919 297 gmat[i][j] = 0;
sNICKer1103 0:333c9abcd919 298 bmat[i][j] = 0;
sNICKer1103 0:333c9abcd919 299 }
sNICKer1103 0:333c9abcd919 300 if(digitbuffer >= 4) {
sNICKer1103 0:333c9abcd919 301 rmat[i][j] += weight;
sNICKer1103 0:333c9abcd919 302 digitbuffer = digitbuffer - 4;
sNICKer1103 0:333c9abcd919 303 }
sNICKer1103 0:333c9abcd919 304
sNICKer1103 0:333c9abcd919 305 if(digitbuffer >= 2) {
sNICKer1103 0:333c9abcd919 306 gmat[i][j] += weight;
sNICKer1103 0:333c9abcd919 307 digitbuffer = digitbuffer - 2;
sNICKer1103 0:333c9abcd919 308 }
sNICKer1103 0:333c9abcd919 309
sNICKer1103 0:333c9abcd919 310 if(digitbuffer >= 1) {
sNICKer1103 0:333c9abcd919 311 bmat[i][j] += weight;
sNICKer1103 0:333c9abcd919 312 }
sNICKer1103 0:333c9abcd919 313
sNICKer1103 0:333c9abcd919 314 weight = weight >> 1;
sNICKer1103 0:333c9abcd919 315 }
sNICKer1103 0:333c9abcd919 316 }
sNICKer1103 0:333c9abcd919 317 }
sNICKer1103 0:333c9abcd919 318 }