Nick Lowyck / Mbed 2 deprecated Ledcube

Dependencies:   mbed mbed-rtos

Committer:
sNICKer1103
Date:
Fri May 02 18:26:40 2014 +0000
Revision:
3:da30c350c339
Parent:
2:f2700008c9d9
Child:
4:a091b8f8216d
Refactoring part 2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sNICKer1103 0:333c9abcd919 1 #include "mbed.h"
sNICKer1103 2:f2700008c9d9 2 #include "I2CDriver.h"
sNICKer1103 2:f2700008c9d9 3 #include "SPIDriver.h"
sNICKer1103 2:f2700008c9d9 4 #include "LedCube.h"
sNICKer1103 3:da30c350c339 5 #include "rtos.h"
sNICKer1103 0:333c9abcd919 6
sNICKer1103 3:da30c350c339 7 int counter1 = 0;
sNICKer1103 3:da30c350c339 8 int counter2 = 0;
sNICKer1103 3:da30c350c339 9 int counter3 = 0;
sNICKer1103 3:da30c350c339 10 char ledbuffer[8][8][8];
sNICKer1103 3:da30c350c339 11 const int frames = 400;
sNICKer1103 0:333c9abcd919 12 bool printed = false;
sNICKer1103 1:53b8c6b13010 13 bool testprinted = false;
sNICKer1103 0:333c9abcd919 14 char layer = 1;
sNICKer1103 0:333c9abcd919 15 bool first = true;
sNICKer1103 0:333c9abcd919 16 int success = 1;
sNICKer1103 2:f2700008c9d9 17 char databuffer[512];
sNICKer1103 2:f2700008c9d9 18 const int spifreq = 10000000; //frequency of SPI interface
sNICKer1103 2:f2700008c9d9 19 const char address = 0xA0; //address van I2C interface
sNICKer1103 0:333c9abcd919 20
sNICKer1103 3:da30c350c339 21 LedCube* ledcube = new LedCube();
sNICKer1103 3:da30c350c339 22 SPIDriver* spidriver = new SPIDriver(p5, NC, p7, p8, p10, spifreq);
sNICKer1103 3:da30c350c339 23 I2CDriver* i2cdriver = new I2CDriver(p28, p27, address);
sNICKer1103 0:333c9abcd919 24 //DigitalOut blank(p9);
sNICKer1103 0:333c9abcd919 25 Serial pc(USBTX, USBRX);
sNICKer1103 0:333c9abcd919 26
sNICKer1103 0:333c9abcd919 27 uint8_t reverse_byte(uint8_t byte);
sNICKer1103 3:da30c350c339 28 void initialtest1();
sNICKer1103 3:da30c350c339 29 void initialtest2();
sNICKer1103 1:53b8c6b13010 30 void sendbuffer();
sNICKer1103 1:53b8c6b13010 31 void modifybuffer();
sNICKer1103 3:da30c350c339 32 void streamthread(const void* args);
sNICKer1103 0:333c9abcd919 33
sNICKer1103 0:333c9abcd919 34 int main()
sNICKer1103 0:333c9abcd919 35 {
sNICKer1103 3:da30c350c339 36 spidriver->testPhase(frames);
sNICKer1103 3:da30c350c339 37
sNICKer1103 3:da30c350c339 38
sNICKer1103 3:da30c350c339 39 Thread thread(streamthread);
sNICKer1103 3:da30c350c339 40 /*while(true) {
sNICKer1103 2:f2700008c9d9 41 if (i2cdriver->receive() == I2CDriver::WriteAddressed) {
sNICKer1103 1:53b8c6b13010 42 pc.printf("Waarde ontvangen!\n\r");
sNICKer1103 1:53b8c6b13010 43 modifybuffer();
sNICKer1103 1:53b8c6b13010 44 printed = false;
sNICKer1103 0:333c9abcd919 45 }
sNICKer1103 3:da30c350c339 46 spidriver->sendFrame(ledcube);
sNICKer1103 3:da30c350c339 47 }//while loop*/
sNICKer1103 0:333c9abcd919 48 }//end main
sNICKer1103 0:333c9abcd919 49
sNICKer1103 3:da30c350c339 50 void streamthread(const void* args){
sNICKer1103 3:da30c350c339 51 spidriver->stream(ledcube);
sNICKer1103 1:53b8c6b13010 52 }
sNICKer1103 1:53b8c6b13010 53
sNICKer1103 1:53b8c6b13010 54 void modifybuffer()
sNICKer1103 1:53b8c6b13010 55 {
sNICKer1103 2:f2700008c9d9 56 unsigned char ledcolor;
sNICKer1103 1:53b8c6b13010 57 while(!((counter1 == 8) && (counter2 == 0) && (counter3 == 1))) {
sNICKer1103 2:f2700008c9d9 58 ledcolor = i2cdriver->read();
sNICKer1103 1:53b8c6b13010 59 if (ledcolor == 8) {
sNICKer1103 1:53b8c6b13010 60 counter1 = 0;
sNICKer1103 1:53b8c6b13010 61 counter2 = 0;
sNICKer1103 1:53b8c6b13010 62 counter3 = 0;
sNICKer1103 1:53b8c6b13010 63 } else {
sNICKer1103 1:53b8c6b13010 64 if (ledcolor == 9) {
sNICKer1103 2:f2700008c9d9 65 ledcube->setData(databuffer);
sNICKer1103 1:53b8c6b13010 66 break;
sNICKer1103 1:53b8c6b13010 67 } else {
sNICKer1103 1:53b8c6b13010 68 ledbuffer[counter1][counter2][counter3] = ledcolor;
sNICKer1103 1:53b8c6b13010 69
sNICKer1103 1:53b8c6b13010 70 if (counter3 < 7) {
sNICKer1103 1:53b8c6b13010 71 counter3++;
sNICKer1103 1:53b8c6b13010 72 } else {
sNICKer1103 1:53b8c6b13010 73 if (counter2 < 7) {
sNICKer1103 1:53b8c6b13010 74 counter2++;
sNICKer1103 1:53b8c6b13010 75 counter3 = 0;
sNICKer1103 1:53b8c6b13010 76 } else {
sNICKer1103 1:53b8c6b13010 77 if (counter1 < 7) {
sNICKer1103 1:53b8c6b13010 78 counter1++;
sNICKer1103 1:53b8c6b13010 79 counter2 = 0;
sNICKer1103 1:53b8c6b13010 80 counter3 = 0;
sNICKer1103 1:53b8c6b13010 81 }
sNICKer1103 1:53b8c6b13010 82 }
sNICKer1103 1:53b8c6b13010 83 }
sNICKer1103 1:53b8c6b13010 84 }
sNICKer1103 1:53b8c6b13010 85 }
sNICKer1103 1:53b8c6b13010 86 }
sNICKer1103 0:333c9abcd919 87 }