manage a led (put on/off, flash...)
Diff: Led.h
- Revision:
- 0:77714f74d105
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Led.h Mon May 06 08:23:41 2013 +0000 @@ -0,0 +1,110 @@ +#ifndef Led_H +#define Led_H + +#include "mbed.h" + +/** + * This class manage LED. + * She permit to put on/off LED, flash LED, get/set delay to flash and read pin status. + * + * @code + * + * #include "Led.h" + * + * Led led (p12); + * + * int main() { + * + * led.on(); // put on LED + * wait(2); // wait 2 seconds (operations) + * + * led.flash(); // flash LED (flash delay = 0.2); + * wait(2); // wait 2 seconds + * + * float delay = led.getFlashDelay(); // delay = flashDelay + * led.off(); // put off LED + * wait(2); // wait 2 seconds (operations) + * + * delay *= 2; // delay = delay * 2 + * led.setFlashDelay(delay); // flashDelay = delay + * led.flash(); // flash LED (flashDelay = 0.4); + * wait(2); // wait 2 seconds (operations) + * + * led.on(); // put on LED + * int pinStatus = int(led); // pinStatus = 1 if LED is lighted, else 0 + * wait(1); // wait 1 second (operations) + * + * if (pinStatus) led.flash(); // if LED is lighted, flash LED + * wait(2); // wait 2 seconds + * led.off(); // put off LED + * pinStatus = int(led); // pinStatus = 1 if LED is lighted, else 0 + * if (pinStatus) led.flash(); // if LED is lighted, flash LED + * wait(2); // wait 2 seconds (operations) + * + * led.off(); // put off LED + * + * return 0; + * } + * @endcode + */ + +class Led { + + +private: + Ticker _ticker; // use for flash led + DigitalOut _pin; + float _flashDelay; + + +public: + + /** Create a Led interface */ + Led(PinName pin); + + /** Destructor */ + ~Led(void); + + /** put on LED */ + void on(void); + + /** put off LED */ + void off(void); + + /** launch LED flash */ + void flash(void); + + /** get pin status + * + * @return _pin + */ + int read(void); + + /** A shorthand for read() */ + operator int() { return read(); } + + /** get flash delay value + * + * @return _flashDelay + */ + float getFlashDelay(void) const; + + /** change flash delay value to delay + * + * @param delay new delay to flash LED + */ + void setFlashDelay(float delay); + + +private: + + // method to change pin status + // use by flash() + void flipPin(void); + + // stop LED flash + // use by on(), off() and flash() + void stopFlash(void); +}; + +#endif // Led_H \ No newline at end of file