Library to show error code with MBED leds. Decimal error code 1-15 can be set
This library can show Your error code (integer 1-15) on MBED Leds.
LEDout.h@10:79c498f26fbd, 2012-09-05 (annotated)
- Committer:
- eqon
- Date:
- Wed Sep 05 07:16:43 2012 +0000
- Revision:
- 10:79c498f26fbd
- Parent:
- 7:5f7e329a4650
- Child:
- 11:e23a7ac024c6
documenting again
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
eqon | 10:79c498f26fbd | 1 | /* LEDout.h */ |
eqon | 10:79c498f26fbd | 2 | |
eqon | 10:79c498f26fbd | 3 | #ifndef LEDOUT_H |
eqon | 10:79c498f26fbd | 4 | #define LEDOUT_H |
eqon | 10:79c498f26fbd | 5 | #include "mbed.h" |
eqon | 10:79c498f26fbd | 6 | |
eqon | 10:79c498f26fbd | 7 | /**Library to show error code with MBED leds. |
eqon | 10:79c498f26fbd | 8 | @file LEDout.h |
eqon | 10:79c498f26fbd | 9 | @code |
eqon | 10:79c498f26fbd | 10 | #include "mbed.h" |
eqon | 10:79c498f26fbd | 11 | #include "LEDout.h" |
eqon | 10:79c498f26fbd | 12 | int main() |
eqon | 10:79c498f26fbd | 13 | { |
eqon | 10:79c498f26fbd | 14 | LEDout led; |
eqon | 10:79c498f26fbd | 15 | led.blink(15,20);//Blink code 15, 20times, //noblocking, so code can continue |
eqon | 10:79c498f26fbd | 16 | for(int k=0; k<10; k++){ |
eqon | 10:79c498f26fbd | 17 | printf("printing while blinking ;) \n"); |
eqon | 10:79c498f26fbd | 18 | wait(1); |
eqon | 10:79c498f26fbd | 19 | } |
eqon | 10:79c498f26fbd | 20 | wait(2); |
eqon | 10:79c498f26fbd | 21 | led.blinks(1,3);//blocking, code 1, 3 blinks, code will not continue until blinks done |
eqon | 10:79c498f26fbd | 22 | led.blinkSet(2,3);//blocking, code stops here, blinks will continue blinking |
eqon | 10:79c498f26fbd | 23 | return 0; |
eqon | 10:79c498f26fbd | 24 | } |
eqon | 10:79c498f26fbd | 25 | @endcode |
eqon | 10:79c498f26fbd | 26 | */ |
eqon | 10:79c498f26fbd | 27 | |
eqon | 10:79c498f26fbd | 28 | |
eqon | 10:79c498f26fbd | 29 | |
eqon | 10:79c498f26fbd | 30 | class LEDout : public BusOut |
eqon | 10:79c498f26fbd | 31 | { |
eqon | 10:79c498f26fbd | 32 | public: |
eqon | 10:79c498f26fbd | 33 | /** Create a LEDout object |
eqon | 10:79c498f26fbd | 34 | */ |
eqon | 10:79c498f26fbd | 35 | |
eqon | 10:79c498f26fbd | 36 | LEDout():BusOut(LED1,LED2,LED3,LED4) { |
eqon | 10:79c498f26fbd | 37 | _cmd=0; |
eqon | 10:79c498f26fbd | 38 | _dur=0; |
eqon | 10:79c498f26fbd | 39 | _blankwait=2; //sec |
eqon | 10:79c498f26fbd | 40 | // printf("Ledout init\n"); |
eqon | 10:79c498f26fbd | 41 | } |
eqon | 10:79c498f26fbd | 42 | /** Non-blocking process blink |
eqon | 10:79c498f26fbd | 43 | * @param cmd 1-15 |
eqon | 10:79c498f26fbd | 44 | * @param cnt how many times to blink |
eqon | 10:79c498f26fbd | 45 | * @param dur blink interval default 0.2sec |
eqon | 10:79c498f26fbd | 46 | */ |
eqon | 10:79c498f26fbd | 47 | |
eqon | 10:79c498f26fbd | 48 | void blink(int cmd,int cnt, float dur=0.2) {// parallel process |
eqon | 10:79c498f26fbd | 49 | _cmd=0; |
eqon | 10:79c498f26fbd | 50 | _dur=0; |
eqon | 10:79c498f26fbd | 51 | _cmd=cmd; |
eqon | 10:79c498f26fbd | 52 | _dur=dur*1000*1000; |
eqon | 10:79c498f26fbd | 53 | _blinkcnt=0;//reset |
eqon | 10:79c498f26fbd | 54 | _blinkamount=cnt*2;//on/off |
eqon | 10:79c498f26fbd | 55 | // printf("Blink start cmd %d dur %f blinkcnt %d amount %d cnt %d\n",_cmd,_dur,_blinkcnt,_blinkamount, cnt); |
eqon | 10:79c498f26fbd | 56 | _ticker2.attach_us(this,&LEDout::blinktick,_dur); |
eqon | 10:79c498f26fbd | 57 | // printf("Blink start cmd %d dur %f blinkcnt %d amount %d cnt %d\n",_cmd,_dur,_blinkcnt,_blinkamount, cnt); |
eqon | 10:79c498f26fbd | 58 | |
eqon | 10:79c498f26fbd | 59 | |
eqon | 10:79c498f26fbd | 60 | } |
eqon | 10:79c498f26fbd | 61 | /** Blocking process blink |
eqon | 10:79c498f26fbd | 62 | * @param cmd 1-15 |
eqon | 10:79c498f26fbd | 63 | * @param cnt how many times to blink |
eqon | 10:79c498f26fbd | 64 | * @param dur blink interval default 0.2sec |
eqon | 10:79c498f26fbd | 65 | */ |
eqon | 10:79c498f26fbd | 66 | void blinks(int cmd,int cnt, float dur =0.2) {// blocking |
eqon | 10:79c498f26fbd | 67 | for (int k=1; k<=cnt; k++) { |
eqon | 10:79c498f26fbd | 68 | LEDout::write(cmd);//ON |
eqon | 10:79c498f26fbd | 69 | wait(dur); |
eqon | 10:79c498f26fbd | 70 | LEDout::write(0);//OFF |
eqon | 10:79c498f26fbd | 71 | wait(dur); |
eqon | 10:79c498f26fbd | 72 | } |
eqon | 10:79c498f26fbd | 73 | } |
eqon | 10:79c498f26fbd | 74 | /** Blocking process and end with loop |
eqon | 10:79c498f26fbd | 75 | * @param cmd 1-15 |
eqon | 10:79c498f26fbd | 76 | * @param cnt how many times to blink |
eqon | 10:79c498f26fbd | 77 | * @param dur blink interval default 0.2sec |
eqon | 10:79c498f26fbd | 78 | */ |
eqon | 10:79c498f26fbd | 79 | void blinkSet(int cmd,int cnt, float dur =0.2) {// blocking and stopping |
eqon | 10:79c498f26fbd | 80 | |
eqon | 10:79c498f26fbd | 81 | while (1) { |
eqon | 10:79c498f26fbd | 82 | blinks( cmd, cnt, dur); |
eqon | 10:79c498f26fbd | 83 | wait(_blankwait); // blank space |
eqon | 10:79c498f26fbd | 84 | } |
eqon | 10:79c498f26fbd | 85 | } |
eqon | 10:79c498f26fbd | 86 | protected: |
eqon | 10:79c498f26fbd | 87 | Timeout _timeout; |
eqon | 10:79c498f26fbd | 88 | Ticker _ticker2; |
eqon | 10:79c498f26fbd | 89 | int _blinkcnt; |
eqon | 10:79c498f26fbd | 90 | int _blinkamount; |
eqon | 10:79c498f26fbd | 91 | int _cmd; // bit command |
eqon | 10:79c498f26fbd | 92 | float _blankwait; |
eqon | 10:79c498f26fbd | 93 | float _dur; |
eqon | 10:79c498f26fbd | 94 | |
eqon | 10:79c498f26fbd | 95 | |
eqon | 10:79c498f26fbd | 96 | void blinktick(void) {// ticker function |
eqon | 10:79c498f26fbd | 97 | |
eqon | 10:79c498f26fbd | 98 | // printf("blink\n"); |
eqon | 10:79c498f26fbd | 99 | if (LEDout::read()==_cmd)//command |
eqon | 10:79c498f26fbd | 100 | LEDout::write(0); |
eqon | 10:79c498f26fbd | 101 | else |
eqon | 10:79c498f26fbd | 102 | LEDout::write(_cmd); |
eqon | 10:79c498f26fbd | 103 | |
eqon | 10:79c498f26fbd | 104 | _blinkcnt++; |
eqon | 10:79c498f26fbd | 105 | |
eqon | 10:79c498f26fbd | 106 | if (_blinkamount==NULL or !_blinkamount)return; |
eqon | 10:79c498f26fbd | 107 | |
eqon | 10:79c498f26fbd | 108 | if (_blinkcnt==_blinkamount) { |
eqon | 10:79c498f26fbd | 109 | _ticker2.detach(); |
eqon | 10:79c498f26fbd | 110 | return; |
eqon | 10:79c498f26fbd | 111 | } |
eqon | 10:79c498f26fbd | 112 | } |
eqon | 10:79c498f26fbd | 113 | }; |
eqon | 10:79c498f26fbd | 114 | #endif/* LEDOUT_H */ |