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:
- 1:53b8c6b13010
- Parent:
- 0:333c9abcd919
- Child:
- 2:f2700008c9d9
--- a/main.cpp Wed Apr 23 09:51:33 2014 +0000
+++ b/main.cpp Wed Apr 30 11:49:26 2014 +0000
@@ -1,170 +1,140 @@
#include "mbed.h"
bool printed = false;
-bool sent = false;
+bool testprinted = 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}};
+int counter1 = 0;
+int counter2 = 0;
+int counter3 = 0;
-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}};
+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 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}};
+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}},
+ {{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}}
+};
//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}}};
+ {{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 testrmatrix[8][8] = {{255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255}
+};
+
+char testgmatrix[8][8] = {{255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255}
+};
-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 testbmatrix[8][8] = {{255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255},
+ {255,255,255,255,255,255,255,255}
+};
-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 rmatrix[8][8] = {{3,129,129,129,129,129,129,153},
+ {3,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,3}
+};
+
+char gmatrix[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,3,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {153,129,129,129,129,129,129,153},
+ {2,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}};
+ {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,3}
+};
SPI spi(p5, NC, p7); // mosi, miso, sclk
+I2CSlave slave(p28, p27); //sda, scl
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]);
+void initialtest();
+void sendbuffer();
+void modifybuffer();
+void torgbmatrix(const 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);
+ slave.address(0xA0); //bevestigen!
// 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]
- }
- }*/
+ for(int i = 0; i < 400; i++) {
+ initialtest();
+ }
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
+ if (slave.receive() == I2CSlave::WriteAddressed) {
+ pc.printf("Waarde ontvangen!\n\r");
+ modifybuffer();
+ printed = false;
}
- }//end if send
-
+ sendbuffer();
+ }//while loop
}//end main
unsigned char reverse_bits(unsigned char b)
@@ -177,14 +147,152 @@
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])
+void initialtest()
+{
+ for(int i = 7; i >= 0; i--) { //eerst laag selecteren, SPI zendt normaalgezien MSB first
+ cs = 0;
+ spi.write(layer);
+ cs = 1;
+ if(!testprinted) pc.printf("%d ", layer);
+ for(int j = 2; j >= 0; j--) {
+ for(int k = 7; k >= 0; k--) {
+ if (j == 2) {
+ if(!testprinted) pc.printf("%d ", testbmatrix[i][k]);
+ cs = 0;
+ spi.write(reverse_byte(testbmatrix[i][k]));
+ cs = 1;
+ }
+
+ if (j == 1) {
+ if(!testprinted) pc.printf("%d ", testgmatrix[i][k]);
+ cs = 0;
+ spi.write(reverse_byte(gmatrix[i][k]));
+ cs = 1;
+ }
+
+ if (j == 0) {
+ if(!testprinted) pc.printf("%d ", testrmatrix[i][k]);
+ cs = 0;
+ spi.write(reverse_byte(testrmatrix[i][k]));
+ cs = 1;
+ }
+ }
+ if(!testprinted) pc.printf(" ");
+ if(!testprinted) pc.printf("\n\r");
+
+ }
+ if(!testprinted) 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;
+
+ }//end outer for loop
+ // latch = 1;
+ if(!testprinted) pc.printf("\n\r");
+ testprinted = true;
+
+}
+
+void sendbuffer()
+{
+ 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");
+
+ }
+ 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;
+
+ }//end outer for loop
+ // latch = 1;
+ if(!printed) pc.printf("\n\r");
+ printed = true;
+}
+
+void modifybuffer()
+{
+ char ledcolor;
+ while(!((counter1 == 8) && (counter2 == 0) && (counter3 == 1))) {
+ ledcolor = slave.read();
+ if (ledcolor == 8) {
+ counter1 = 0;
+ counter2 = 0;
+ counter3 = 0;
+ } else {
+ if (ledcolor == 9) {
+ torgbmatrix(ledbuffer, rmatrix, gmatrix, bmatrix);
+ break;
+ } else {
+ ledbuffer[counter1][counter2][counter3] = ledcolor;
+
+ if (counter3 < 7) {
+ counter3++;
+ } else {
+ if (counter2 < 7) {
+ counter2++;
+ counter3 = 0;
+ } else {
+ if (counter1 < 7) {
+ counter1++;
+ counter2 = 0;
+ counter3 = 0;
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+void torgbmatrix(const 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.
+ 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;