Library to show error code with MBED leds. Decimal error code 1-15 can be set

Dependencies:   mbed

This library can show Your error code (integer 1-15) on MBED Leds.

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?

UserRevisionLine numberNew 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 };