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).
main.cpp@0:4194d17b08e3, 2011-08-02 (annotated)
- Committer:
- caeng
- Date:
- Tue Aug 02 05:05:15 2011 +0000
- Revision:
- 0:4194d17b08e3
v1.0
Who changed what in which revision?
User | Revision | Line number | New 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 |