Tricolor LED driver for any 3 pin tricolor LED.
tricolor.h@0:80ebb233e295, 2013-05-24 (annotated)
- Committer:
- fossum_13
- Date:
- Fri May 24 19:09:49 2013 +0000
- Revision:
- 0:80ebb233e295
Initial commit
Who changed what in which revision?
User | Revision | Line number | New 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 |