LED Serial program -- listens for serial input to control the 4 built in LEDS. Packets are of the type \'S_ _ _ _\' (e.g. S0101 to turn on LEDs 2 and 4).

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 
00003 // Variables
00004 DigitalOut led1(LED1);
00005 DigitalOut led2(LED2);
00006 DigitalOut led3(LED3);
00007 DigitalOut led4(LED4);
00008 Serial pc(USBTX, USBRX);
00009 Timer t;
00010 int secTimer;
00011 
00012 int main() {
00013     // set up
00014     pc.baud(38400);
00015     led1 = 0;
00016     led2 = 0;
00017     led3 = 0;
00018     led4 = 0;
00019     t.start();
00020     secTimer = t.read_ms();
00021     // serial reading variables
00022     char temp;
00023     
00024     while(1) {
00025         // check serial
00026         if(pc.readable()){
00027             temp = pc.getc();
00028             if(temp == 'S'){
00029                 // valid packet, continue parsing
00030                 while(!pc.readable());
00031                 temp = pc.getc(); // led1
00032                 if(temp == '1'){
00033                     led1 = 1;
00034                 }else if(temp == '0'){
00035                     led1 = 0;
00036                 }
00037                 while(!pc.readable());
00038                 temp = pc.getc(); // led2
00039                 if(temp == '1'){
00040                     led2 = 1;
00041                 }else if(temp == '0'){
00042                     led2 = 0;
00043                 }
00044                 while(!pc.readable());
00045                 temp = pc.getc(); // led3
00046                 if(temp == '1'){
00047                     led3 = 1;
00048                 }else if(temp == '0'){
00049                     led3 = 0;
00050                 }
00051                 while(!pc.readable());
00052                 temp = pc.getc(); // led4
00053                 if(temp == '1'){
00054                     led4 = 1;
00055                 }else if(temp == '0'){
00056                     led4 = 0;
00057                 }
00058                 
00059             }
00060         }//end of parsing
00061         
00062         //relay status of LEDs to server, in case LEDs weren't set
00063         if((t.read_ms()- secTimer) > 1000){
00064             secTimer = t.read_ms();
00065             pc.putc('S');
00066             if(led1.read() == 1){
00067                 pc.putc('1');
00068             }else{
00069                 pc.putc('0');
00070             }
00071             if(led2.read() == 1){
00072                 pc.putc('1');
00073             }else{
00074                 pc.putc('0');
00075             }
00076             if(led3.read() == 1){
00077                 pc.putc('1');
00078             }else{
00079                 pc.putc('0');
00080             }
00081             if(led4.read() == 1){
00082                 pc.putc('1');
00083             }else{
00084                 pc.putc('0');
00085             }
00086         }
00087     }//end of infinite loop
00088     
00089 }//end of main