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:
- 3:da30c350c339
- Parent:
- 2:f2700008c9d9
- Child:
- 4:a091b8f8216d
--- a/main.cpp Thu May 01 20:58:59 2014 +0000
+++ b/main.cpp Fri May 02 18:26:40 2014 +0000
@@ -2,7 +2,13 @@
#include "I2CDriver.h"
#include "SPIDriver.h"
#include "LedCube.h"
+#include "rtos.h"
+int counter1 = 0;
+int counter2 = 0;
+int counter3 = 0;
+char ledbuffer[8][8][8];
+const int frames = 400;
bool printed = false;
bool testprinted = false;
char layer = 1;
@@ -11,134 +17,38 @@
char databuffer[512];
const int spifreq = 10000000; //frequency of SPI interface
const char address = 0xA0; //address van I2C interface
-LedCube *ledcube = new LedCube();
-int counter1 = 0;
-int counter2 = 0;
-int counter3 = 0;
-
-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}}
-};
-
-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}}
-};
-
-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,3}
-};
-
-SPIDriver *spidriver = new SPIDriver(p5, NC, p7, p8, p10, spifreq);
-I2CDriver *i2cdriver = new I2CDriver(p28, p27, address);
+LedCube* ledcube = new LedCube();
+SPIDriver* spidriver = new SPIDriver(p5, NC, p7, p8, p10, spifreq);
+I2CDriver* i2cdriver = new I2CDriver(p28, p27, address);
//DigitalOut blank(p9);
Serial pc(USBTX, USBRX);
uint8_t reverse_byte(uint8_t byte);
-void initialtest();
+void initialtest1();
+void initialtest2();
void sendbuffer();
void modifybuffer();
-void torgbmatrix(const char ledm[8][8][8], char rmat[8][8], char gmat[8][8], char bmat[8][8]);
+void streamthread(const void* args);
int main()
{
- for(int i = 0; i < 400; i++) {
- initialtest();
- }
-
- while(true) {
+ spidriver->testPhase(frames);
+
+
+ Thread thread(streamthread);
+ /*while(true) {
if (i2cdriver->receive() == I2CDriver::WriteAddressed) {
pc.printf("Waarde ontvangen!\n\r");
modifybuffer();
printed = false;
}
- sendbuffer();
- }//while loop
+ spidriver->sendFrame(ledcube);
+ }//while loop*/
}//end main
-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 initialtest(){
- for(int i = 0; i < 8; i++) { //eerst laag selecteren, SPI zendt normaalgezien MSB first
- spidriver->write(ledcube->getNextValue());
- for(int j = 0; j < 24; j++) {
- spidriver->write(ledcube->getNextValue()); //ledwaarden zelf nog altijd apart, omdat ze mogelijk gespiegeld moeten doorgestuurd worden
- } //(LSB first)
- wait(0.00125); //voor 100 Hz
- //blank = 1;
- spidriver->pulseLatch();
- //blank = 0;
- }//end outer for loop
- // latch = 1;
-}
-
-void sendbuffer()
-{
- for(int i = 0; i < 8; i++) { //eerst laag selecteren, SPI zendt normaalgezien MSB first
- spidriver->write(ledcube->getNextValue());
- for(int j = 0; j < 24; j++) {
- spidriver->write(ledcube->getNextValue()); //ledwaarden zelf nog altijd apart, omdat ze mogelijk gespiegeld moeten doorgestuurd worden
- } //(LSB first)
- wait(0.00125);
-
- //blank = 1;
- spidriver->pulseLatch();
- //blank = 0;
-
- }//end outer for loop
- // latch = 1;
+void streamthread(const void* args){
+ spidriver->stream(ledcube);
}
void modifybuffer()
@@ -174,36 +84,4 @@
}
}
}
-}
-
-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.
- 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