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

Committer:
caeng
Date:
Tue Aug 02 05:05:15 2011 +0000
Revision:
0:4194d17b08e3
v1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
caeng 0:4194d17b08e3 1 #include "mbed.h"
caeng 0:4194d17b08e3 2
caeng 0:4194d17b08e3 3 // Variables
caeng 0:4194d17b08e3 4 DigitalOut led1(LED1);
caeng 0:4194d17b08e3 5 DigitalOut led2(LED2);
caeng 0:4194d17b08e3 6 DigitalOut led3(LED3);
caeng 0:4194d17b08e3 7 DigitalOut led4(LED4);
caeng 0:4194d17b08e3 8 Serial pc(USBTX, USBRX);
caeng 0:4194d17b08e3 9 Timer t;
caeng 0:4194d17b08e3 10 int secTimer;
caeng 0:4194d17b08e3 11
caeng 0:4194d17b08e3 12 int main() {
caeng 0:4194d17b08e3 13 // set up
caeng 0:4194d17b08e3 14 pc.baud(38400);
caeng 0:4194d17b08e3 15 led1 = 0;
caeng 0:4194d17b08e3 16 led2 = 0;
caeng 0:4194d17b08e3 17 led3 = 0;
caeng 0:4194d17b08e3 18 led4 = 0;
caeng 0:4194d17b08e3 19 t.start();
caeng 0:4194d17b08e3 20 secTimer = t.read_ms();
caeng 0:4194d17b08e3 21 // serial reading variables
caeng 0:4194d17b08e3 22 char temp;
caeng 0:4194d17b08e3 23
caeng 0:4194d17b08e3 24 while(1) {
caeng 0:4194d17b08e3 25 // check serial
caeng 0:4194d17b08e3 26 if(pc.readable()){
caeng 0:4194d17b08e3 27 temp = pc.getc();
caeng 0:4194d17b08e3 28 if(temp == 'S'){
caeng 0:4194d17b08e3 29 // valid packet, continue parsing
caeng 0:4194d17b08e3 30 while(!pc.readable());
caeng 0:4194d17b08e3 31 temp = pc.getc(); // led1
caeng 0:4194d17b08e3 32 if(temp == '1'){
caeng 0:4194d17b08e3 33 led1 = 1;
caeng 0:4194d17b08e3 34 }else if(temp == '0'){
caeng 0:4194d17b08e3 35 led1 = 0;
caeng 0:4194d17b08e3 36 }
caeng 0:4194d17b08e3 37 while(!pc.readable());
caeng 0:4194d17b08e3 38 temp = pc.getc(); // led2
caeng 0:4194d17b08e3 39 if(temp == '1'){
caeng 0:4194d17b08e3 40 led2 = 1;
caeng 0:4194d17b08e3 41 }else if(temp == '0'){
caeng 0:4194d17b08e3 42 led2 = 0;
caeng 0:4194d17b08e3 43 }
caeng 0:4194d17b08e3 44 while(!pc.readable());
caeng 0:4194d17b08e3 45 temp = pc.getc(); // led3
caeng 0:4194d17b08e3 46 if(temp == '1'){
caeng 0:4194d17b08e3 47 led3 = 1;
caeng 0:4194d17b08e3 48 }else if(temp == '0'){
caeng 0:4194d17b08e3 49 led3 = 0;
caeng 0:4194d17b08e3 50 }
caeng 0:4194d17b08e3 51 while(!pc.readable());
caeng 0:4194d17b08e3 52 temp = pc.getc(); // led4
caeng 0:4194d17b08e3 53 if(temp == '1'){
caeng 0:4194d17b08e3 54 led4 = 1;
caeng 0:4194d17b08e3 55 }else if(temp == '0'){
caeng 0:4194d17b08e3 56 led4 = 0;
caeng 0:4194d17b08e3 57 }
caeng 0:4194d17b08e3 58
caeng 0:4194d17b08e3 59 }
caeng 0:4194d17b08e3 60 }//end of parsing
caeng 0:4194d17b08e3 61
caeng 0:4194d17b08e3 62 //relay status of LEDs to server, in case LEDs weren't set
caeng 0:4194d17b08e3 63 if((t.read_ms()- secTimer) > 1000){
caeng 0:4194d17b08e3 64 secTimer = t.read_ms();
caeng 0:4194d17b08e3 65 pc.putc('S');
caeng 0:4194d17b08e3 66 if(led1.read() == 1){
caeng 0:4194d17b08e3 67 pc.putc('1');
caeng 0:4194d17b08e3 68 }else{
caeng 0:4194d17b08e3 69 pc.putc('0');
caeng 0:4194d17b08e3 70 }
caeng 0:4194d17b08e3 71 if(led2.read() == 1){
caeng 0:4194d17b08e3 72 pc.putc('1');
caeng 0:4194d17b08e3 73 }else{
caeng 0:4194d17b08e3 74 pc.putc('0');
caeng 0:4194d17b08e3 75 }
caeng 0:4194d17b08e3 76 if(led3.read() == 1){
caeng 0:4194d17b08e3 77 pc.putc('1');
caeng 0:4194d17b08e3 78 }else{
caeng 0:4194d17b08e3 79 pc.putc('0');
caeng 0:4194d17b08e3 80 }
caeng 0:4194d17b08e3 81 if(led4.read() == 1){
caeng 0:4194d17b08e3 82 pc.putc('1');
caeng 0:4194d17b08e3 83 }else{
caeng 0:4194d17b08e3 84 pc.putc('0');
caeng 0:4194d17b08e3 85 }
caeng 0:4194d17b08e3 86 }
caeng 0:4194d17b08e3 87 }//end of infinite loop
caeng 0:4194d17b08e3 88
caeng 0:4194d17b08e3 89 }//end of main