Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed EthernetInterface mbed-rto
LEDDriver.cpp
- Committer:
- albireo987
- Date:
- 2018-04-25
- Revision:
- 26:4c673da1a3ae
- Parent:
- 10:7871aeacea08
- Child:
- 27:29948b116e82
File content as of revision 26:4c673da1a3ae:
#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};
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->queue=queue;// prep for multithreaded
}
void LEDDriver::drive(int numberOfLeds)
{
// 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
while(true)
{
poll(numberOfLeds) ;//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);
}
}
}
}
}
void LEDDriver::run(int numberOfLeds)
{
drive(numberOfLeds);
}
void LEDDriver::ownWait(uint32_t us)
{
for(uint32_t i=0;i<us;i++)
{
for(volatile uint32_t j =0; j <96;j++)
{
}
}
}
void LEDDriver::poll(int numberOfLeds)
{
for(int i =0;i<numberOfLeds;i++)
{
osEvent event = queue->get();
int temp = *((int*)event.value.p);
if(temp==1||temp==1||temp==2||temp==3)
{
messageList[i]=temp;
}
}
}
