First version
Dependencies: mbed EthernetInterface mbed-rto
Diff: LEDDriver.cpp
- Revision:
- 38:47c075a354b5
- Parent:
- 32:537005b4a065
- Child:
- 42:bb1d9d8a9fe4
- Child:
- 43:eaa8348f1150
- Child:
- 63:0ab266251e86
diff -r 381bcce15e3e -r 47c075a354b5 LEDDriver.cpp --- a/LEDDriver.cpp Wed May 02 06:33:40 2018 +0000 +++ b/LEDDriver.cpp Wed May 02 12:44:26 2018 +0000 @@ -1,5 +1,5 @@ -#include "LEDDriver.h" -Serial pc(USBTX,USBRX); +#include "LEDDriver.h" +Serial pc(USBTX,USBRX); LEDDriver::LEDDriver( Queue<int,8>* queue) { static int messageList[8]={4,4,4,4,4,4,4,4}; @@ -13,50 +13,16 @@ void LEDDriver::drive(int numberOfLeds) { poll(numberOfLeds,1) ; - poll(numberOfLeds,2) ; - // 1 1 1 1 0 0 0 0 0 1 - static int codedMessage0[]={1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0};//{1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,1,0}; currently frequency measure message(standard square wave) - // 1 1 1 1 0 1 0 0 0 1 - static int codedMessage1[]={1,0,1,0,1,0,1,0,0,1,1,0,0,1,0,1,0,1,1,0}; - // 1 1 1 1 1 0 1 0 0 1 - static int codedMessage2[]={1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,1,0}; - // 1 1 1 1 1 1 0 0 0 1 - static int codedMessage3[]={1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0}; - static int codedMessage4[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};//default message for multithreading + poll(numberOfLeds,2) ; + Ticker ticker; while(true) { poll(numberOfLeds,1) ;//prep multi - for(int j=0;j<20;j++) - { - for(int i =0;i<numberOfLeds;i++) - { - if(messageList[i]==0) - { - leds[i].write(codedMessage0[j]); - ownWait(1);//7.511kHZ - } - else if(messageList[i]==1) - { - leds[i].write(codedMessage1[j]); - // ownWait(1); - } - else if(messageList[i]==2) - { - leds[i].write(codedMessage2[j]); - // ownWait(1); - } - else if(messageList[i]==3) - { - leds[i].write(codedMessage3[j]); - // ownWait(1); - } - else if(messageList[i]==4) - { - leds[i].write(codedMessage4[j]); - // ownWait(1); - } - } - } + for(int i =0;i<numberOfLeds;i++) + { + ticker.attach(this,&LEDDriver::sendData,0.000000625f); + } + poll(numberOfLeds,2) ; } } @@ -69,7 +35,7 @@ { for(uint32_t i=0;i<us;i++) { - for(volatile uint32_t j =0; j <96;j++) + for(volatile uint32_t j =0; j <3;j++) { } @@ -82,24 +48,68 @@ { for(int i =0;i<(numberOfLeds/2);i++) { - osEvent event = queue->get(); - int temp = *((int*)event.value.p); - if(temp==1||temp==1||temp==2||temp==3) + //osEvent event = queue->get(); + //int temp = *((int*)event.value.p); + //if(temp==1||temp==1||temp==2||temp==3) { - messageList[i]=temp; - } + messageList[i]=1; + } } } else if(first==2) - { + { for(int i =(numberOfLeds/2);i<(numberOfLeds);i++) { - osEvent event = queue->get(); - int temp = *((int*)event.value.p); - if(temp==1||temp==1||temp==2||temp==3) + //osEvent event = queue->get(); + //int temp = *((int*)event.value.p); + //if(temp==1||temp==1||temp==2||temp==3) { - messageList[i]=temp; - } + messageList[i]=1; + } } } +} + +void LEDDriver::sendData() +{ + // 1 1 1 1 0 0 0 0 0 1 + static int codedMessage0[]={1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0};//{1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,1,0}; currently frequency measure message(standard square wave) + // 1 1 1 1 0 1 0 0 0 1 + static int codedMessage1[]={1,0,1,0,1,0,1,0,0,1,1,0,0,1,0,1,0,1,1,0}; + // 1 1 1 1 1 0 1 0 0 1 + static int codedMessage2[]={1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,1,0}; + // 1 1 1 1 1 1 0 0 0 1 + static int codedMessage3[]={1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0}; + static int codedMessage4[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};//default message for multithreading + for(int led =0 ; led<8;led++) + { + for(int j =0;j<20;j++) + { + if(messageList[led]==0) + { + leds[led].write(codedMessage0[j]); + ownWait(25);//100HZ + } + else if(messageList[led]==1) + { + leds[led].write(codedMessage1[j]); + ownWait(25); + } + else if(messageList[led]==2) + { + leds[led].write(codedMessage2[j]); + ownWait(25); + } + else if(messageList[led]==3) + { + leds[led].write(codedMessage3[j]); + ownWait(25); + } + else if(messageList[led]==4) + { + leds[led].write(codedMessage4[j]); + ownWait(25); + } + } + } } \ No newline at end of file