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.
main.cpp@1:53b8c6b13010, 2014-04-30 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |