Dependencies:   MCP23S17 PinDetect mbed

RGBLed.h

Committer:
jderemer3
Date:
2017-03-01
Revision:
0:9dc33481ce1b

File content as of revision 0:9dc33481ce1b:

#include "mbed.h"
 
//Class to control an RGB LED using three PWM pins
class RGBLed
{
public:
    RGBLed(PinName redpin, PinName greenpin, PinName bluepin);
    void write(float red,float green, float blue);
    void write(LEDColor c);
    RGBLed operator = (LEDColor c) {
        write(c);
        return *this;
    };
private:
    PwmOut _redpin;
    PwmOut _greenpin;
    PwmOut _bluepin;
};
 
RGBLed::RGBLed (PinName redpin, PinName greenpin, PinName bluepin)
    : _redpin(redpin), _greenpin(greenpin), _bluepin(bluepin)
{
    //50Hz PWM clock default a bit too low, go to 2000Hz (less flicker)
    _redpin.period(0.0005);
}
 
void RGBLed::write(float red,float green, float blue)
{
    _redpin = red;
    _greenpin = green;
    _bluepin = blue;
}
void RGBLed::write(LEDColor c)
{
    _redpin = c.red;
    _greenpin = c.green;
    _bluepin = c.blue;
}
 
////classes could be moved to include file
// 
// 
////Setup RGB led using PWM pins and class
//RGBLed myRGBled(p23,p22,p21); //RGB PWM pins
// 
////setup some color objects in flash using const's
//const LEDColor red(1.0,0.0,0.0);
//const LEDColor green(0.0,0.2,0.0);
////brighter green LED is scaled down to same as red and
////blue LED outputs on Sparkfun RGBLED
//const LEDColor blue(0.0,0.0,1.0);
//const LEDColor yellow(1.0,0.2,0.0);
//const LEDColor white(1.0,0.2,1.0);
// 
//int main()
//{
//    while(1) {
//        myRGBled = red;
//        //myRGBled.write(1.0,0.0,0,0); //red
//        wait(2.0);
//        myRGBled = green;
//        //myRGBled.write(0.0,1.0,0.0); //green
//        wait(2.0);
//        myRGBled = blue;
//        //myRGBled.write(0.0,0.0,1.0); //blue
//        wait(2.0);
//        myRGBled = red + green; //yellow = red + green
//        wait(2.0);
//        //white with a slow fade to black dimming effect
//        for (float brightness=1.0; brightness>=0.0001; brightness*=0.99) {
//            myRGBled = white * brightness;
//            wait(0.005);
//        }
//        wait(2.0);
//    }
//}