This library is used to dirve a led with pluse for a duration and periodic toggle. Version 1.0

Committer:
bborredon
Date:
Thu Dec 24 12:32:33 2015 +0000
Revision:
0:5851c2ded0ed
Led library version 1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bborredon 0:5851c2ded0ed 1 #ifndef __Led_H__
bborredon 0:5851c2ded0ed 2 #define __Led_H__
bborredon 0:5851c2ded0ed 3
bborredon 0:5851c2ded0ed 4 /***********************************************************
bborredon 0:5851c2ded0ed 5 Author: Bernard Borredon
bborredon 0:5851c2ded0ed 6 Date : 24 decembre 2015
bborredon 0:5851c2ded0ed 7 Version: 1.0
bborredon 0:5851c2ded0ed 8 - creation.
bborredon 0:5851c2ded0ed 9 ************************************************************/
bborredon 0:5851c2ded0ed 10
bborredon 0:5851c2ded0ed 11 #include "mbed.h"
bborredon 0:5851c2ded0ed 12
bborredon 0:5851c2ded0ed 13 /** Led class
bborredon 0:5851c2ded0ed 14 * Used to drive a led : on, on for a duration, off, toggle, toggle with a period.
bborredon 0:5851c2ded0ed 15 *
bborredon 0:5851c2ded0ed 16 * @code
bborredon 0:5851c2ded0ed 17 * #include "Led.h"
bborredon 0:5851c2ded0ed 18 *
bborredon 0:5851c2ded0ed 19 * Led led1(LED1); // LPC1768 LED1
bborredon 0:5851c2ded0ed 20 * Led led2(LED2); // LPC1768 LED2
bborredon 0:5851c2ded0ed 21 * Led led3(LED3); // LPC1768 LED3
bborredon 0:5851c2ded0ed 22 * Led led4(LED4); // LPC1768 LED4
bborredon 0:5851c2ded0ed 23 *
bborredon 0:5851c2ded0ed 24 * int main()
bborredon 0:5851c2ded0ed 25 * {
bborredon 0:5851c2ded0ed 26 * int32_t count = 0;
bborredon 0:5851c2ded0ed 27
bborredon 0:5851c2ded0ed 28 * // Light on LED1
bborredon 0:5851c2ded0ed 29 * led1.on();
bborredon 0:5851c2ded0ed 30 *
bborredon 0:5851c2ded0ed 31 * // Toggle LED2 with a 2000ms period
bborredon 0:5851c2ded0ed 32 * led2.toggle(2000);
bborredon 0:5851c2ded0ed 33 *
bborredon 0:5851c2ded0ed 34 * // Toggle LED3 with a 4000ms period
bborredon 0:5851c2ded0ed 35 * led3.toggle(4000,true);
bborredon 0:5851c2ded0ed 36 *
bborredon 0:5851c2ded0ed 37 * while(1) {
bborredon 0:5851c2ded0ed 38 * // Pulse LED4 for 1000ms each 10s
bborredon 0:5851c2ded0ed 39 * led4.pulse(1000);
bborredon 0:5851c2ded0ed 40 * count++;
bborredon 0:5851c2ded0ed 41 * wait(10.0);
bborredon 0:5851c2ded0ed 42 *
bborredon 0:5851c2ded0ed 43 * // After 60s stop toggle LED2
bborredon 0:5851c2ded0ed 44 * if(count == 6)
bborredon 0:5851c2ded0ed 45 * led2.toggle(0,false);
bborredon 0:5851c2ded0ed 46 * }
bborredon 0:5851c2ded0ed 47 * return(0);
bborredon 0:5851c2ded0ed 48 * }
bborredon 0:5851c2ded0ed 49 * @endcode
bborredon 0:5851c2ded0ed 50 */
bborredon 0:5851c2ded0ed 51
bborredon 0:5851c2ded0ed 52 /** LedBase class
bborredon 0:5851c2ded0ed 53 * Used to drive a led : on, off, toggle.
bborredon 0:5851c2ded0ed 54 *
bborredon 0:5851c2ded0ed 55 */
bborredon 0:5851c2ded0ed 56
bborredon 0:5851c2ded0ed 57 class LedBase {
bborredon 0:5851c2ded0ed 58 public :
bborredon 0:5851c2ded0ed 59 /** Class constructor : create and initialize LedBase instance
bborredon 0:5851c2ded0ed 60 * @param pin : name of the pin connected to the led (PinName)
bborredon 0:5851c2ded0ed 61 * @returns none
bborredon 0:5851c2ded0ed 62 */
bborredon 0:5851c2ded0ed 63 LedBase(PinName pin);
bborredon 0:5851c2ded0ed 64
bborredon 0:5851c2ded0ed 65 /** Toggle led
bborredon 0:5851c2ded0ed 66 * @param none
bborredon 0:5851c2ded0ed 67 * @returns none
bborredon 0:5851c2ded0ed 68 */
bborredon 0:5851c2ded0ed 69 void toggle(void);
bborredon 0:5851c2ded0ed 70
bborredon 0:5851c2ded0ed 71 /** Light on led
bborredon 0:5851c2ded0ed 72 * @param none
bborredon 0:5851c2ded0ed 73 * @returns none
bborredon 0:5851c2ded0ed 74 */
bborredon 0:5851c2ded0ed 75 void on(void);
bborredon 0:5851c2ded0ed 76
bborredon 0:5851c2ded0ed 77 /** Light off led
bborredon 0:5851c2ded0ed 78 * @param none
bborredon 0:5851c2ded0ed 79 * @returns none
bborredon 0:5851c2ded0ed 80 */
bborredon 0:5851c2ded0ed 81 void off(void);
bborredon 0:5851c2ded0ed 82
bborredon 0:5851c2ded0ed 83 /** Get led status (on or off)
bborredon 0:5851c2ded0ed 84 * @param none
bborredon 0:5851c2ded0ed 85 * @returns led status (bool)
bborredon 0:5851c2ded0ed 86 * false : led is off
bborredon 0:5851c2ded0ed 87 * ture : led is on
bborredon 0:5851c2ded0ed 88 */
bborredon 0:5851c2ded0ed 89 bool isOn(void);
bborredon 0:5851c2ded0ed 90
bborredon 0:5851c2ded0ed 91 protected :
bborredon 0:5851c2ded0ed 92 DigitalOut _pin;
bborredon 0:5851c2ded0ed 93 bool _isOn;
bborredon 0:5851c2ded0ed 94 };
bborredon 0:5851c2ded0ed 95
bborredon 0:5851c2ded0ed 96 class Led : public LedBase {
bborredon 0:5851c2ded0ed 97 public :
bborredon 0:5851c2ded0ed 98 /** Class constructor : create and initialize Led instance
bborredon 0:5851c2ded0ed 99 * @param pin : name of the pin connected to the led (PinName)
bborredon 0:5851c2ded0ed 100 * @returns none
bborredon 0:5851c2ded0ed 101 */
bborredon 0:5851c2ded0ed 102 Led(PinName pin);
bborredon 0:5851c2ded0ed 103
bborredon 0:5851c2ded0ed 104 /** Periodically toggle led
bborredon 0:5851c2ded0ed 105 * @param period : toggle period in ms (uinit16_t)
bborredon 0:5851c2ded0ed 106 * @param mode : stop auto toggle if false (bool)
bborredon 0:5851c2ded0ed 107 * @returns none
bborredon 0:5851c2ded0ed 108 */
bborredon 0:5851c2ded0ed 109 void toggle(uint16_t period, bool mode = true);
bborredon 0:5851c2ded0ed 110
bborredon 0:5851c2ded0ed 111 /** Light on led for a duration
bborredon 0:5851c2ded0ed 112 * @param time : light on duration in ms (uint16_t)
bborredon 0:5851c2ded0ed 113 * @returns none
bborredon 0:5851c2ded0ed 114 */
bborredon 0:5851c2ded0ed 115 virtual void pulse(uint16_t time);
bborredon 0:5851c2ded0ed 116
bborredon 0:5851c2ded0ed 117 private :
bborredon 0:5851c2ded0ed 118 LedBase *_led;
bborredon 0:5851c2ded0ed 119 Timeout _tPulse;
bborredon 0:5851c2ded0ed 120 Ticker _tToggle;
bborredon 0:5851c2ded0ed 121 void atTimer(void);
bborredon 0:5851c2ded0ed 122 void toggleCB(void);
bborredon 0:5851c2ded0ed 123 };
bborredon 0:5851c2ded0ed 124
bborredon 0:5851c2ded0ed 125 #endif