![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
First version
Dependencies: mbed EthernetInterface mbed-rto
LEDDriver.cpp
- Committer:
- albireo987
- Date:
- 2018-04-18
- Revision:
- 9:c800045806f0
- Parent:
- 8:a987e04734dd
- Child:
- 10:7871aeacea08
File content as of revision 9:c800045806f0:
#include "LEDDriver.h" Serial pc(USBTX,USBRX); LEDDriver::LEDDriver(/*Mutex* lock,*/ int* sharedDirections, int sizeOfSharedDirections) { static int messageList[8]={0}; static DigitalOut leds[]={DigitalOut(p10),DigitalOut(p11),DigitalOut(p12),DigitalOut(p13),DigitalOut(p14),DigitalOut(p15),DigitalOut(p16),DigitalOut(p17)}; //this->lock=lock; this->copy=Copy(); this->messageList=messageList; this->leds=leds; copy.copyInt((directions),sharedDirections,sizeOfSharedDirections); } void LEDDriver::encode(int directionValue,int led) { if(directionValue==0) { messageList[led]=0; } else if(directionValue==1) { messageList[led]=1; } else if(directionValue==2) { messageList[led]=2; } else if(directionValue==3) { messageList[led]=3; } } int LEDDriver::getDirection(int id) { int direction= directions[id]; return direction; } void LEDDriver::drive(int numberOfLeds) { int delay = 25; encodeAll(numberOfLeds);// 1 1 1 1 0 0 0 0 0 1 static int codedMessage0[]={1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,1,0}; // 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}; while(true) { for(int j=0;j<20;j++) { for(int i =0;i<numberOfLeds;i++) { if(messageList[i]==0) { leds[i].write(codedMessage0[j]); pc.printf("led%d,message%d:%d\n\r",i,j,codedMessage0[j]); wait_ms(delay);//500Hz 1/500 gewenste periode 8/90MHz(#leds/fclock) basis periode dus verhouding van de perioden / Clock is uiteindelijke frequentie (grof) moet manueel } // gefinetuned worden. else if(messageList[i]==1) { leds[i].write(codedMessage1[j]); pc.printf("led%d,message%d:%d\n\r",i,j,codedMessage1[j]); wait_ms(delay); } else if(messageList[i]==2) { leds[i].write(codedMessage2[j]); pc.printf("led%d,message%d:%d\n\r",i,j,codedMessage2[j]); wait_ms(delay); } else if(messageList[i]==3) { leds[i].write(codedMessage3[j]); pc.printf("led%d,message%d:%d\n\r",i,j,codedMessage3[j]); wait_ms(delay); } } } } } void LEDDriver::run(int numberOfLeds) { drive(numberOfLeds); } void LEDDriver::encodeAll(int numberOfLeds) { for(int i = 0;i<numberOfLeds;i++) { encode(getDirection(i),i); } }