demo versie 16/05

Dependencies:   EthernetInterface mbed-rto mbed

Fork of ProjectVLC by Klaas Govaerts

Committer:
albireo987
Date:
Wed May 16 11:15:25 2018 +0000
Revision:
80:dbda5092950e
Parent:
79:ebff08a66ff3
commentaar geschreven def

Who changed what in which revision?

UserRevisionLine numberNew contents of line
albireo987 38:47c075a354b5 1 #include "LEDDriver.h"
albireo987 78:8efde3e9e3fb 2 Serial pc(USBTX,USBRX);
albireo987 25:4c673da1a3ae 3 LEDDriver::LEDDriver( Queue<int,8>* queue)
albireo987 2:36158325f7b0 4 {
KlaasGovaerts 58:4e06cfb6d010 5 this->queue=queue;
KlaasGovaerts 47:2d877f01ca7b 6 initArrays();
KlaasGovaerts 47:2d877f01ca7b 7 currentLocation=0;
albireo987 78:8efde3e9e3fb 8 mask=16777216;
albireo987 79:ebff08a66ff3 9 codedMessage0=0x1F54AAD;//32852653;// 2796202 commented message is frequency measure message(standard square wave) 4:('1')+2 ticker 0.002f. (250Hz, 10ms down)
albireo987 79:ebff08a66ff3 10 codedMessage1=0x1F54CAD;//32853165
albireo987 79:ebff08a66ff3 11 codedMessage2=0x1F552AD;//32854701;
albireo987 79:ebff08a66ff3 12 codedMessage3=0x1F554AD;//32855213;
albireo987 79:ebff08a66ff3 13 codedMessage4=0;
albireo987 2:36158325f7b0 14 }
albireo987 2:36158325f7b0 15
albireo987 2:36158325f7b0 16 void LEDDriver::drive(int numberOfLeds)
albireo987 2:36158325f7b0 17 {
albireo987 78:8efde3e9e3fb 18 if(currentLocation>=25){
albireo987 78:8efde3e9e3fb 19 currentLocation=0;
albireo987 78:8efde3e9e3fb 20 mask = 16777216;
albireo987 78:8efde3e9e3fb 21 }
KlaasGovaerts 49:8fe84f455571 22 if(currentLocation==0){
KlaasGovaerts 58:4e06cfb6d010 23 poll(numberOfLeds);
KlaasGovaerts 49:8fe84f455571 24 }
albireo987 78:8efde3e9e3fb 25 setLEDS(mask);
albireo987 78:8efde3e9e3fb 26 mask=mask>>1;
KlaasGovaerts 47:2d877f01ca7b 27 currentLocation++;
albireo987 78:8efde3e9e3fb 28
KlaasGovaerts 46:ffac07bff0d8 29 }
KlaasGovaerts 46:ffac07bff0d8 30
KlaasGovaerts 46:ffac07bff0d8 31 void LEDDriver::drive8leds(){
KlaasGovaerts 46:ffac07bff0d8 32 drive(8);
albireo987 2:36158325f7b0 33 }
albireo987 2:36158325f7b0 34
KlaasGovaerts 58:4e06cfb6d010 35 void LEDDriver::poll(int numberOfLeds)
albireo987 10:7871aeacea08 36 {
albireo987 80:dbda5092950e 37 for(int i =0;i<(numberOfLeds);i++)
albireo987 26:29948b116e82 38 {
KlaasGovaerts 46:ffac07bff0d8 39 osEvent event = queue->get();
KlaasGovaerts 46:ffac07bff0d8 40 int temp = *((int*)event.value.p);
KlaasGovaerts 54:45207965e160 41 if(temp==0||temp==1||temp==2||temp==3||temp==4)
albireo987 26:29948b116e82 42 {
KlaasGovaerts 46:ffac07bff0d8 43 messageList[i]=temp;
KlaasGovaerts 54:45207965e160 44 }
KlaasGovaerts 58:4e06cfb6d010 45 }
albireo987 38:47c075a354b5 46 }
albireo987 38:47c075a354b5 47
KlaasGovaerts 47:2d877f01ca7b 48 void LEDDriver::initArrays()
albireo987 38:47c075a354b5 49 {
KlaasGovaerts 58:4e06cfb6d010 50 int tempMessageList[8]={4,4,4,4,4,4,4,4};
albireo987 65:7951d11432f8 51 DigitalOut *tempLeds[]={new DigitalOut(p11),new DigitalOut(p10),new DigitalOut(p12),new DigitalOut(p13),new DigitalOut(p14),new DigitalOut(p15),new DigitalOut(p16),new DigitalOut(p17)};
KlaasGovaerts 47:2d877f01ca7b 52
KlaasGovaerts 49:8fe84f455571 53 memcpy(messageList,tempMessageList,sizeof(messageList));
KlaasGovaerts 47:2d877f01ca7b 54 memcpy(leds,tempLeds,sizeof(leds));
KlaasGovaerts 47:2d877f01ca7b 55 }
KlaasGovaerts 47:2d877f01ca7b 56
albireo987 78:8efde3e9e3fb 57 void LEDDriver::setLEDS(int mask){
albireo987 38:47c075a354b5 58 for(int led =0 ; led<8;led++)
albireo987 38:47c075a354b5 59 {
albireo987 38:47c075a354b5 60 if(messageList[led]==0)
albireo987 38:47c075a354b5 61 {
albireo987 78:8efde3e9e3fb 62 leds[led]->write(codedMessage0&mask);
albireo987 38:47c075a354b5 63 }
albireo987 38:47c075a354b5 64 else if(messageList[led]==1)
albireo987 38:47c075a354b5 65 {
albireo987 78:8efde3e9e3fb 66 leds[led]->write(codedMessage1&mask);
albireo987 38:47c075a354b5 67 }
albireo987 38:47c075a354b5 68 else if(messageList[led]==2)
albireo987 38:47c075a354b5 69 {
albireo987 78:8efde3e9e3fb 70 leds[led]->write((codedMessage2)&mask);
albireo987 38:47c075a354b5 71 }
albireo987 38:47c075a354b5 72 else if(messageList[led]==3)
albireo987 38:47c075a354b5 73 {
albireo987 78:8efde3e9e3fb 74 leds[led]->write((codedMessage3)&mask);
albireo987 38:47c075a354b5 75 }
KlaasGovaerts 49:8fe84f455571 76 else if(messageList[led]==4||messageList[led]==-1)
albireo987 38:47c075a354b5 77 {
albireo987 78:8efde3e9e3fb 78 leds[led]->write((codedMessage4)&mask);
albireo987 38:47c075a354b5 79 }
KlaasGovaerts 56:4274186bf584 80 }
KlaasGovaerts 50:c5cd73d93045 81 }
KlaasGovaerts 50:c5cd73d93045 82
KlaasGovaerts 61:738f026cf667 83 LEDDriver::~LEDDriver(){
KlaasGovaerts 61:738f026cf667 84 for(int i=0;i<8;i++){
KlaasGovaerts 61:738f026cf667 85 delete leds[i];
KlaasGovaerts 61:738f026cf667 86 }
KlaasGovaerts 61:738f026cf667 87 }