Tricolor LED driver for any 3 pin tricolor LED.
tricolor.h
- Committer:
- fossum_13
- Date:
- 2013-05-24
- Revision:
- 0:80ebb233e295
File content as of revision 0:80ebb233e295:
#ifndef TRICOLOR_H
#define TRICOLOR_H
#include "mbed.h"
/** Tricolor LED driver
*
* This is a reentrant LED controller
*
* @code
#include "mbed.h"
#include "tricolor.h"
Tricolor led(p23, p24, p25); // red, green, blue
int main() {
led.SetLEDColor(0, 100, 0); // Green @ about 40%
while(1) {
wait(0.5);
led.Toggle();
}
}
* @endcode
*/
class Tricolor
{
public:
/** Basic Constructor
*/
Tricolor(PinName r, PinName g, PinName b) : _Red(r), _Green(g), _Blue(b) {
SetLEDColor(0, 0, 0);
}
/** Color Constructor
* Adds color values to constructor.
*/
Tricolor(PinName r, uint8_t r_color,
PinName g, uint8_t g_color,
PinName b, uint8_t b_color) :
_Red(r), _Green(g), _Blue(b) {
SetLEDColor(r_color, g_color, b_color);
}
/// Sets LED to blue (LED will be on afterwards)
void Blue(void);
/// Sets LED to green (LED will be on afterwards)
void Green(void);
/// Turns the LED off (saves color)
void LEDOff(void);
/// Restores LED to set color (color MUST be set beforehand)
void LEDOn(void);
/// Sets LED to red (LED will be on afterwards)
void Red(void);
/** Sets custom color for LED (LED will be on afterwards)
* @param red Amount of red color (0-255)
* @param green Amount of green color (0-255)
* @param blue Amount of blue color (0-255)
*/
void SetLEDColor(uint8_t, uint8_t, uint8_t);
/// Toggles the LED on and off
void Toggle(void);
private:
// LED Output
bool _on; // Is the LED on
PwmOut _Red; // LED red pin
PwmOut _Green; // LED green pin
PwmOut _Blue; // LED blue pin
// LED Color
float _RedPwm; // Amount of red
float _GreenPwm;// Amount of green
float _BluePwm; // Amount of blue
};
#endif