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@3:cbca11570652, 2012-09-05 (annotated)
- Committer:
- eqon
- Date:
- Wed Sep 05 06:47:09 2012 +0000
- Revision:
- 3:cbca11570652
- Parent:
- 2:947917aff1fa
- Child:
- 4:74c0b4be19a9
Docu
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
eqon | 0:3e7de538b366 | 1 | #include "mbed.h" |
eqon | 1:bef84bec3049 | 2 | |
eqon | 1:bef84bec3049 | 3 | /** |
eqon | 1:bef84bec3049 | 4 | *@file LEDout.h |
eqon | 1:bef84bec3049 | 5 | *@brief Library to show error code with MBED leds. |
eqon | 1:bef84bec3049 | 6 | *@author Egon |
eqon | 1:bef84bec3049 | 7 | *@date 9/5/2012 |
eqon | 1:bef84bec3049 | 8 | */ |
eqon | 0:3e7de538b366 | 9 | class LEDout : public BusOut |
eqon | 0:3e7de538b366 | 10 | { |
eqon | 1:bef84bec3049 | 11 | public: |
eqon | 1:bef84bec3049 | 12 | /** |
eqon | 1:bef84bec3049 | 13 | *Create a LEDout object |
eqon | 3:cbca11570652 | 14 | * @file LEDout.h |
eqon | 1:bef84bec3049 | 15 | */ |
eqon | 0:3e7de538b366 | 16 | |
eqon | 0:3e7de538b366 | 17 | LEDout():BusOut(LED1,LED2,LED3,LED4) { |
eqon | 0:3e7de538b366 | 18 | _cmd=0; |
eqon | 0:3e7de538b366 | 19 | _dur=0; |
eqon | 0:3e7de538b366 | 20 | _blankwait=2; //sec |
eqon | 0:3e7de538b366 | 21 | // printf("Ledout init\n"); |
eqon | 0:3e7de538b366 | 22 | } |
eqon | 2:947917aff1fa | 23 | /** |
eqon | 3:cbca11570652 | 24 | |
eqon | 2:947917aff1fa | 25 | * Non-blocking process blink |
eqon | 3:cbca11570652 | 26 | * @file LEDout.h |
eqon | 1:bef84bec3049 | 27 | * @param cmd 1-15 |
eqon | 1:bef84bec3049 | 28 | * @param cnt how many times to blink |
eqon | 1:bef84bec3049 | 29 | * @param dur blink interval default 0.2sec |
eqon | 1:bef84bec3049 | 30 | */ |
eqon | 0:3e7de538b366 | 31 | void blink(int cmd,int cnt, float dur=0.2) {// parallel process |
eqon | 0:3e7de538b366 | 32 | _cmd=0; |
eqon | 0:3e7de538b366 | 33 | _dur=0; |
eqon | 0:3e7de538b366 | 34 | _cmd=cmd; |
eqon | 0:3e7de538b366 | 35 | _dur=dur*1000*1000; |
eqon | 0:3e7de538b366 | 36 | _blinkcnt=0;//reset |
eqon | 0:3e7de538b366 | 37 | _blinkamount=cnt*2;//on/off |
eqon | 0:3e7de538b366 | 38 | // printf("Blink start cmd %d dur %f blinkcnt %d amount %d cnt %d\n",_cmd,_dur,_blinkcnt,_blinkamount, cnt); |
eqon | 0:3e7de538b366 | 39 | _ticker2.attach_us(this,&LEDout::blinktick,_dur); |
eqon | 0:3e7de538b366 | 40 | // printf("Blink start cmd %d dur %f blinkcnt %d amount %d cnt %d\n",_cmd,_dur,_blinkcnt,_blinkamount, cnt); |
eqon | 0:3e7de538b366 | 41 | |
eqon | 0:3e7de538b366 | 42 | |
eqon | 0:3e7de538b366 | 43 | } |
eqon | 2:947917aff1fa | 44 | /* |
eqon | 2:947917aff1fa | 45 | * Blocking process blink |
eqon | 3:cbca11570652 | 46 | * @file LEDout.h |
eqon | 1:bef84bec3049 | 47 | * @param cmd 1-15 |
eqon | 1:bef84bec3049 | 48 | * @param cnt how many times to blink |
eqon | 1:bef84bec3049 | 49 | * @param dur blink interval default 0.2sec |
eqon | 1:bef84bec3049 | 50 | */ |
eqon | 0:3e7de538b366 | 51 | void blinks(int cmd,int cnt, float dur =0.2) {// blocking |
eqon | 0:3e7de538b366 | 52 | for (int k=1; k<=cnt; k++) { |
eqon | 0:3e7de538b366 | 53 | LEDout::write(cmd);//ON |
eqon | 0:3e7de538b366 | 54 | wait(dur); |
eqon | 0:3e7de538b366 | 55 | LEDout::write(0);//OFF |
eqon | 0:3e7de538b366 | 56 | wait(dur); |
eqon | 0:3e7de538b366 | 57 | } |
eqon | 0:3e7de538b366 | 58 | } |
eqon | 2:947917aff1fa | 59 | /* |
eqon | 2:947917aff1fa | 60 | * Blocking process and end with loop |
eqon | 3:cbca11570652 | 61 | * @file LEDout.h |
eqon | 1:bef84bec3049 | 62 | * @param cmd 1-15 |
eqon | 1:bef84bec3049 | 63 | * @param cnt how many times to blink |
eqon | 1:bef84bec3049 | 64 | * @param dur blink interval default 0.2sec |
eqon | 1:bef84bec3049 | 65 | */ |
eqon | 0:3e7de538b366 | 66 | void blinkSet(int cmd,int cnt, float dur =0.2) {// blocking and stopping |
eqon | 0:3e7de538b366 | 67 | |
eqon | 0:3e7de538b366 | 68 | while (1) { |
eqon | 0:3e7de538b366 | 69 | blinks( cmd, cnt, dur); |
eqon | 0:3e7de538b366 | 70 | wait(_blankwait); // blank space |
eqon | 0:3e7de538b366 | 71 | } |
eqon | 0:3e7de538b366 | 72 | } |
eqon | 1:bef84bec3049 | 73 | protected: |
eqon | 0:3e7de538b366 | 74 | Timeout _timeout; |
eqon | 0:3e7de538b366 | 75 | Ticker _ticker2; |
eqon | 0:3e7de538b366 | 76 | int _blinkcnt; |
eqon | 0:3e7de538b366 | 77 | int _blinkamount; |
eqon | 0:3e7de538b366 | 78 | int _cmd; // bit command |
eqon | 0:3e7de538b366 | 79 | float _blankwait; |
eqon | 0:3e7de538b366 | 80 | float _dur; |
eqon | 1:bef84bec3049 | 81 | |
eqon | 1:bef84bec3049 | 82 | |
eqon | 0:3e7de538b366 | 83 | void blinktick(void) {// ticker function |
eqon | 0:3e7de538b366 | 84 | |
eqon | 0:3e7de538b366 | 85 | // printf("blink\n"); |
eqon | 0:3e7de538b366 | 86 | if (LEDout::read()==_cmd)//command |
eqon | 0:3e7de538b366 | 87 | LEDout::write(0); |
eqon | 0:3e7de538b366 | 88 | else |
eqon | 0:3e7de538b366 | 89 | LEDout::write(_cmd); |
eqon | 0:3e7de538b366 | 90 | |
eqon | 0:3e7de538b366 | 91 | _blinkcnt++; |
eqon | 0:3e7de538b366 | 92 | |
eqon | 0:3e7de538b366 | 93 | if (_blinkamount==NULL or !_blinkamount)return; |
eqon | 0:3e7de538b366 | 94 | |
eqon | 0:3e7de538b366 | 95 | if (_blinkcnt==_blinkamount) { |
eqon | 0:3e7de538b366 | 96 | _ticker2.detach(); |
eqon | 0:3e7de538b366 | 97 | return; |
eqon | 0:3e7de538b366 | 98 | } |
eqon | 0:3e7de538b366 | 99 | } |
eqon | 0:3e7de538b366 | 100 | }; |