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.
Diff: main.cpp
- Revision:
- 0:333c9abcd919
- Child:
- 1:53b8c6b13010
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Wed Apr 23 09:51:33 2014 +0000
@@ -0,0 +1,210 @@
+#include "mbed.h"
+
+bool printed = false;
+bool sent = false;
+char layer = 1;
+bool first = true;
+int success = 1;
+
+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}},
+ {{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}},
+ {{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}},
+ {{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}},
+ {{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}},
+ {{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}},
+ {{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}},
+ {{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}}};
+
+const char rsolution[8][8] = {{153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,152},
+ {153,129,129,129,129,129,129,152},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153}};
+
+const char gsolution[8][8] = {{153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {25,129,129,129,129,129,129,153},
+ {25,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,152}};
+
+const char bsolution[8][8] = {{25,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {25,129,129,129,129,129,129,153},
+ {25,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153}};
+
+//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)
+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}},
+ {{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129}},
+ {{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129}},
+ {{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129}},
+ {{11,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,3}},
+ {{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129}},
+ {{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129}},
+ {{129,0,0,0,0,0,0,129},{129,0,0,0,0,0,0,129},{19,0,0,0,0,0,0,17}}};
+
+char rmatrix[8][8] = {{153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,152},
+ {153,129,129,129,129,129,129,152},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153}};
+
+char gmatrix[8][8] = {{153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,152},
+ {153,129,129,129,129,129,129,152},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153}};
+
+char bmatrix[8][8] = {{153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,152},
+ {153,129,129,129,129,129,129,152},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153}};
+
+SPI spi(p5, NC, p7); // mosi, miso, sclk
+DigitalOut latch(p8);
+//DigitalOut blank(p9);
+DigitalOut cs(p10);
+Serial pc(USBTX, USBRX);
+
+uint8_t reverse_byte(uint8_t byte);
+void torgbmatrix(char ledm[8][8][8], char rmat[8][8], char gmat[8][8], char bmat[8][8]);
+
+int main()
+{
+ /*
+ torgbmatrix(ledexample, rmatrix, gmatrix, bmatrix);
+
+ for(int i = 0; i < 8; i++){
+ for(int j = 0; j < 8; j++){
+ if((rmatrix[i][j] != rsolution[i][j]) || (gmatrix[i][j] != gsolution[i][j]) || (bmatrix[i][j] != bsolution[i][j])){
+ success = 0;
+ }
+ }
+ }
+ while(true){}*/
+
+ spi.format(8,3);
+ spi.frequency(10000000);
+ // blank = 0;
+ latch = 0;
+ cs = 1;
+
+ /* for(int i = 7; i >= 0; i--){
+ for(int j = 2; j >= 0; j--){
+ pc.printf("%d", matrix[i][j][k]
+ }
+ }*/
+
+ while(true) {
+ if(!sent) { //eerst laag selecteren, SPI zendt normaal gezien MSB first
+ for(int i = 7; i >= 0; i--) {
+ cs = 0;
+ spi.write(layer);
+ cs = 1;
+ if(!printed) pc.printf("%d ", layer);
+ for(int j = 2; j >= 0; j--) {
+ for(int k = 7; k >= 0; k--) {
+ if (j == 2) {
+ if(!printed) pc.printf("%d ", bmatrix[i][k]);
+ cs = 0;
+ spi.write(reverse_byte(bmatrix[i][k]));
+ cs = 1;
+ }
+
+ if (j == 1) {
+ if(!printed) pc.printf("%d ", gmatrix[i][k]);
+ cs = 0;
+ spi.write(reverse_byte(gmatrix[i][k]));
+ cs = 1;
+ }
+
+ if (j == 0) {
+ if(!printed) pc.printf("%d ", rmatrix[i][k]);
+ cs = 0;
+ spi.write(reverse_byte(rmatrix[i][k]));
+ cs = 1;
+ }
+ }
+ if(!printed) pc.printf(" ");
+ if(!printed) pc.printf("\n\r");
+
+ wait(0.00125); //vragen aan tommy, buffer per laag?
+
+ //blank = 1;
+ latch = 1;
+ latch = 0;
+ //blank = 0;
+
+ layer = layer << 1;
+ if(layer == 0) layer = 1;
+ }
+ if(!printed) pc.printf("\n\r");
+ printed = true;
+ sent = true;
+ latch = 1;
+ }//end outer for loop
+ }
+ }//end if send
+
+}//end main
+
+unsigned char reverse_bits(unsigned char b)
+{
+ return ((b * 0x0802LU & 0x22110LU) | (b * 0x8020LU & 0x88440LU)) * 0x10101LU >> 16;
+}
+
+uint8_t reverse_byte(uint8_t byte)
+{
+ return (__rbit(byte) >> 24) & 0xFF; // reverse a byte in a 32-bit value, and extract the byte
+}
+
+void torgbmatrix(char ledm[8][8][8], char rmat[8][8], char gmat[8][8], char bmat[8][8])
+{
+ for(int i = 0; i < 8; i++) { //ledmatrix (afkomstig van raspberry pi) omzetten naar rgb matrix (voor ledcube)
+ for(int j = 0; j < 8; j++) {
+ char weight = 128;
+ for(int k = 0; k < 8; k++) { //bij de rmatrix, gmatrix en bmatrix op de juiste plaatsen de juiste gewichten optellen indien nodig
+ char digitbuffer = ledm[i][j][k]; //bv voor rmatrix alleen gewicht bij optellen indien er een 1 op de derde positie is (binair)
+ if(k == 0) { //anders gezegd: als het getal in de ledmatrix groter of gelijk aan 4 is.
+ rmat[i][j] = 0; //initialisatie
+ gmat[i][j] = 0;
+ bmat[i][j] = 0;
+ }
+ if(digitbuffer >= 4) {
+ rmat[i][j] += weight;
+ digitbuffer = digitbuffer - 4;
+ }
+
+ if(digitbuffer >= 2) {
+ gmat[i][j] += weight;
+ digitbuffer = digitbuffer - 2;
+ }
+
+ if(digitbuffer >= 1) {
+ bmat[i][j] += weight;
+ }
+
+ weight = weight >> 1;
+ }
+ }
+ }
+}
\ No newline at end of file