Basic RGB library for non-PWM LEDs

Dependents:   MenuExample exosite_http_example exosite_http_example FastPWM

Warning : Works with non-PWM LED (0 or 1).

A quick example on how to use it.

#include "mbed.h"
#include "RGBLed.h"

RGBLed led(LED_RED, LED_GREEN, LED_BLUE);

int main() {
    RGBLed::Color list[8] = {RGBLed::BLACK, RGBLed::RED, RGBLed::GREEN, RGBLed::BLUE, RGBLed::MAGENTA, RGBLed::CYAN, RGBLed::YELLOW, RGBLed::WHITE};
    int i = 0;

    while (true) {
        i = (i+1)%8;
        led.setColor(list[i]);
        wait_ms(100);
    }
}

RGBLed.h

Committer:
rominos2
Date:
2014-09-03
Revision:
3:be0a3c2ec426
Child:
4:176363412797

File content as of revision 3:be0a3c2ec426:

#include "mbed.h"

/** A  light RGB LED Class \n
    Warning : This library is for non-PWN LED \n
    Here is an quick hello-world class that makes the LED blink with all colors. \n
    @code
    #include "mbed.h"
    #include "rgb.h"

    RGBLed led(LED_RED, LED_GREEN, LED_BLUE);

    int main() {
        RGBLed::Color list[8] = {RGBLed::BLACK, RGBLed::RED, RGBLed::GREEN, RGBLed::BLUE, RGBLed::MAGENTA, RGBLed::CYAN, RGBLed::YELLOW, RGBLed::WHITE};
        int i = 0;

        while (true) {
            i = (i+1)%8;
            led.setColor(list[i]);
            wait_ms(100);
        }
    }
    @endcode
*/
class RGBLed {
private:
    DigitalOut _red;
    DigitalOut _green;
    DigitalOut _blue;
        
public:
    /** RGB Color class \n
    Colors have been defined and are ready to use in RGBLed class
    */
    class Color {
    private:
        bool _r; /**< Red component of the Color */
        bool _g; /**< Green component of the Color */
        bool _b; /**< Blue component of the Color */
        Color(bool r, bool g, bool b); /**< Constructor */
        friend class RGBLed;    
    };
    
    /** Create a RGBLed, containing the informations about the LED pinout.
        @param redPin the pin linked to the Red LED
        @param greenPin the pin linked to the green LED
        @param blue the pin linked to the blue LED
    */
    RGBLed(PinName redPin, PinName greenPin, PinName bluePin);    
    
    /** Change the color of the LED.
        @param color the color to display
        @see RGBLed::Color
    */
    void setColor(RGBLed::Color& color);

    static Color BLACK; /**< Black Color (no color) */
    static Color RED; /**< Red Color */
    static Color GREEN; /**< Green Color */
    static Color BLUE; /**< Blue Color */
    static Color MAGENTA; /**< Magenta Color (Red + Blue) */
    static Color CYAN; /**< Cyan Color (Green + Blue) */
    static Color YELLOW; /**< Yellow Color (Red + Green) */
    static Color WHITE; /**< White Color (Red + Green + Blue) */
};