Tricolor LED driver for any 3 pin tricolor LED.

Dependents:   xivelyboard

Committer:
fossum_13
Date:
Fri May 24 19:09:49 2013 +0000
Revision:
0:80ebb233e295
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fossum_13 0:80ebb233e295 1 #ifndef TRICOLOR_H
fossum_13 0:80ebb233e295 2 #define TRICOLOR_H
fossum_13 0:80ebb233e295 3
fossum_13 0:80ebb233e295 4 #include "mbed.h"
fossum_13 0:80ebb233e295 5
fossum_13 0:80ebb233e295 6 /** Tricolor LED driver
fossum_13 0:80ebb233e295 7 *
fossum_13 0:80ebb233e295 8 * This is a reentrant LED controller
fossum_13 0:80ebb233e295 9 *
fossum_13 0:80ebb233e295 10 * @code
fossum_13 0:80ebb233e295 11 #include "mbed.h"
fossum_13 0:80ebb233e295 12 #include "tricolor.h"
fossum_13 0:80ebb233e295 13
fossum_13 0:80ebb233e295 14 Tricolor led(p23, p24, p25); // red, green, blue
fossum_13 0:80ebb233e295 15
fossum_13 0:80ebb233e295 16 int main() {
fossum_13 0:80ebb233e295 17 led.SetLEDColor(0, 100, 0); // Green @ about 40%
fossum_13 0:80ebb233e295 18
fossum_13 0:80ebb233e295 19 while(1) {
fossum_13 0:80ebb233e295 20 wait(0.5);
fossum_13 0:80ebb233e295 21 led.Toggle();
fossum_13 0:80ebb233e295 22 }
fossum_13 0:80ebb233e295 23 }
fossum_13 0:80ebb233e295 24 * @endcode
fossum_13 0:80ebb233e295 25 */
fossum_13 0:80ebb233e295 26 class Tricolor
fossum_13 0:80ebb233e295 27 {
fossum_13 0:80ebb233e295 28 public:
fossum_13 0:80ebb233e295 29 /** Basic Constructor
fossum_13 0:80ebb233e295 30 */
fossum_13 0:80ebb233e295 31 Tricolor(PinName r, PinName g, PinName b) : _Red(r), _Green(g), _Blue(b) {
fossum_13 0:80ebb233e295 32 SetLEDColor(0, 0, 0);
fossum_13 0:80ebb233e295 33 }
fossum_13 0:80ebb233e295 34 /** Color Constructor
fossum_13 0:80ebb233e295 35 * Adds color values to constructor.
fossum_13 0:80ebb233e295 36 */
fossum_13 0:80ebb233e295 37 Tricolor(PinName r, uint8_t r_color,
fossum_13 0:80ebb233e295 38 PinName g, uint8_t g_color,
fossum_13 0:80ebb233e295 39 PinName b, uint8_t b_color) :
fossum_13 0:80ebb233e295 40 _Red(r), _Green(g), _Blue(b) {
fossum_13 0:80ebb233e295 41 SetLEDColor(r_color, g_color, b_color);
fossum_13 0:80ebb233e295 42 }
fossum_13 0:80ebb233e295 43 /// Sets LED to blue (LED will be on afterwards)
fossum_13 0:80ebb233e295 44 void Blue(void);
fossum_13 0:80ebb233e295 45 /// Sets LED to green (LED will be on afterwards)
fossum_13 0:80ebb233e295 46 void Green(void);
fossum_13 0:80ebb233e295 47 /// Turns the LED off (saves color)
fossum_13 0:80ebb233e295 48 void LEDOff(void);
fossum_13 0:80ebb233e295 49 /// Restores LED to set color (color MUST be set beforehand)
fossum_13 0:80ebb233e295 50 void LEDOn(void);
fossum_13 0:80ebb233e295 51 /// Sets LED to red (LED will be on afterwards)
fossum_13 0:80ebb233e295 52 void Red(void);
fossum_13 0:80ebb233e295 53 /** Sets custom color for LED (LED will be on afterwards)
fossum_13 0:80ebb233e295 54 * @param red Amount of red color (0-255)
fossum_13 0:80ebb233e295 55 * @param green Amount of green color (0-255)
fossum_13 0:80ebb233e295 56 * @param blue Amount of blue color (0-255)
fossum_13 0:80ebb233e295 57 */
fossum_13 0:80ebb233e295 58 void SetLEDColor(uint8_t, uint8_t, uint8_t);
fossum_13 0:80ebb233e295 59 /// Toggles the LED on and off
fossum_13 0:80ebb233e295 60 void Toggle(void);
fossum_13 0:80ebb233e295 61
fossum_13 0:80ebb233e295 62 private:
fossum_13 0:80ebb233e295 63 // LED Output
fossum_13 0:80ebb233e295 64 bool _on; // Is the LED on
fossum_13 0:80ebb233e295 65 PwmOut _Red; // LED red pin
fossum_13 0:80ebb233e295 66 PwmOut _Green; // LED green pin
fossum_13 0:80ebb233e295 67 PwmOut _Blue; // LED blue pin
fossum_13 0:80ebb233e295 68
fossum_13 0:80ebb233e295 69 // LED Color
fossum_13 0:80ebb233e295 70 float _RedPwm; // Amount of red
fossum_13 0:80ebb233e295 71 float _GreenPwm;// Amount of green
fossum_13 0:80ebb233e295 72 float _BluePwm; // Amount of blue
fossum_13 0:80ebb233e295 73 };
fossum_13 0:80ebb233e295 74
fossum_13 0:80ebb233e295 75 #endif