![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
First version
Dependencies: mbed EthernetInterface mbed-rto
Diff: LEDDriver.cpp
- Revision:
- 45:2d877f01ca7b
- Parent:
- 44:ffac07bff0d8
- Child:
- 47:8fe84f455571
diff -r ffac07bff0d8 -r 2d877f01ca7b LEDDriver.cpp --- a/LEDDriver.cpp Wed May 02 15:04:28 2018 +0000 +++ b/LEDDriver.cpp Wed May 09 07:24:39 2018 +0000 @@ -1,20 +1,23 @@ #include "LEDDriver.h" -Serial pc(USBTX,USBRX); +//Serial pc(USBTX,USBRX); LEDDriver::LEDDriver( Queue<int,8>* queue) { - static int messageList[8]={4,4,4,4,4,4,4,4}; - static DigitalOut leds[]={DigitalOut(p23),DigitalOut(p11),DigitalOut(p12),DigitalOut(p13),DigitalOut(p14),DigitalOut(p15),DigitalOut(p16),DigitalOut(p17)}; - this->messageList=messageList; - this->leds=leds; + //this->messageList=messageList; + //this->leds=leds; this->queue=queue;// prep for multithreaded - + initArrays(); + currentLocation=0; } void LEDDriver::drive(int numberOfLeds) { poll(numberOfLeds,1); poll(numberOfLeds,2); - sendData(); + setLEDS(currentLocation); + currentLocation++; + if(currentLocation>=20){ + currentLocation=0; + } /* Ticker ticker; @@ -31,7 +34,7 @@ void LEDDriver::run(Ticker* ticker) { - ticker->attach(this,&LEDDriver::drive8leds,1); + ticker->attach(this,&LEDDriver::drive8leds,1);//TODO faster } void LEDDriver::drive8leds(){ @@ -57,7 +60,7 @@ { osEvent event = queue->get(); int temp = *((int*)event.value.p); - if(temp==1||temp==1||temp==2||temp==3) + if(temp==0||temp==1||temp==2||temp==3) { messageList[i]=temp; } @@ -69,7 +72,7 @@ { osEvent event = queue->get(); int temp = *((int*)event.value.p); - if(temp==1||temp==1||temp==2||temp==3) + if(temp==0||temp==1||temp==2||temp==3) { messageList[i]=temp; } @@ -77,46 +80,57 @@ } } -void LEDDriver::sendData() +void LEDDriver::initArrays() { - // 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 0 0 0 0 1 + int tempCodedMessage0[20]={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}; + int tempCodedMessage1[20]={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}; + int tempCodedMessage2[20]={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 + int tempCodedMessage3[20]={1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0}; + int tempCodedMessage4[20]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};//default message for multithreading + int tempMessageList[8]={4,4,4,4,4,4,4,4}; + DigitalOut tempLeds[]={DigitalOut(p23),DigitalOut(p11),DigitalOut(p12),DigitalOut(p13),DigitalOut(p14),DigitalOut(p15),DigitalOut(p16),DigitalOut(p17)}; + + memcpy(codedMessage0,tempCodedMessage0,sizeof(codedMessage0)); + memcpy(codedMessage1,tempCodedMessage1,sizeof(codedMessage1)); + memcpy(codedMessage2,tempCodedMessage2,sizeof(codedMessage2)); + memcpy(codedMessage3,tempCodedMessage3,sizeof(codedMessage3)); + memcpy(codedMessage4,tempCodedMessage4,sizeof(codedMessage4)); + + memcpy(tempMessageList,messageList,sizeof(messageList)); + memcpy(leds,tempLeds,sizeof(leds)); +} + +void LEDDriver::setLEDS(int j){ 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 + //ownWait(25);//100HZ } else if(messageList[led]==1) { leds[led].write(codedMessage1[j]); - ownWait(25); + //ownWait(25); } else if(messageList[led]==2) { leds[led].write(codedMessage2[j]); - ownWait(25); + //ownWait(25); } else if(messageList[led]==3) { leds[led].write(codedMessage3[j]); - ownWait(25); + //ownWait(25); } else if(messageList[led]==4) { leds[led].write(codedMessage4[j]); - ownWait(25); + //ownWait(25); } } - } } \ No newline at end of file