Dependencies: MCP23S17 PinDetect mbed
RGBLed.h@0:9dc33481ce1b, 2017-03-01 (annotated)
- Committer:
- jderemer3
- Date:
- Wed Mar 01 16:36:55 2017 +0000
- Revision:
- 0:9dc33481ce1b
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jderemer3 | 0:9dc33481ce1b | 1 | #include "mbed.h" |
jderemer3 | 0:9dc33481ce1b | 2 | |
jderemer3 | 0:9dc33481ce1b | 3 | //Class to control an RGB LED using three PWM pins |
jderemer3 | 0:9dc33481ce1b | 4 | class RGBLed |
jderemer3 | 0:9dc33481ce1b | 5 | { |
jderemer3 | 0:9dc33481ce1b | 6 | public: |
jderemer3 | 0:9dc33481ce1b | 7 | RGBLed(PinName redpin, PinName greenpin, PinName bluepin); |
jderemer3 | 0:9dc33481ce1b | 8 | void write(float red,float green, float blue); |
jderemer3 | 0:9dc33481ce1b | 9 | void write(LEDColor c); |
jderemer3 | 0:9dc33481ce1b | 10 | RGBLed operator = (LEDColor c) { |
jderemer3 | 0:9dc33481ce1b | 11 | write(c); |
jderemer3 | 0:9dc33481ce1b | 12 | return *this; |
jderemer3 | 0:9dc33481ce1b | 13 | }; |
jderemer3 | 0:9dc33481ce1b | 14 | private: |
jderemer3 | 0:9dc33481ce1b | 15 | PwmOut _redpin; |
jderemer3 | 0:9dc33481ce1b | 16 | PwmOut _greenpin; |
jderemer3 | 0:9dc33481ce1b | 17 | PwmOut _bluepin; |
jderemer3 | 0:9dc33481ce1b | 18 | }; |
jderemer3 | 0:9dc33481ce1b | 19 | |
jderemer3 | 0:9dc33481ce1b | 20 | RGBLed::RGBLed (PinName redpin, PinName greenpin, PinName bluepin) |
jderemer3 | 0:9dc33481ce1b | 21 | : _redpin(redpin), _greenpin(greenpin), _bluepin(bluepin) |
jderemer3 | 0:9dc33481ce1b | 22 | { |
jderemer3 | 0:9dc33481ce1b | 23 | //50Hz PWM clock default a bit too low, go to 2000Hz (less flicker) |
jderemer3 | 0:9dc33481ce1b | 24 | _redpin.period(0.0005); |
jderemer3 | 0:9dc33481ce1b | 25 | } |
jderemer3 | 0:9dc33481ce1b | 26 | |
jderemer3 | 0:9dc33481ce1b | 27 | void RGBLed::write(float red,float green, float blue) |
jderemer3 | 0:9dc33481ce1b | 28 | { |
jderemer3 | 0:9dc33481ce1b | 29 | _redpin = red; |
jderemer3 | 0:9dc33481ce1b | 30 | _greenpin = green; |
jderemer3 | 0:9dc33481ce1b | 31 | _bluepin = blue; |
jderemer3 | 0:9dc33481ce1b | 32 | } |
jderemer3 | 0:9dc33481ce1b | 33 | void RGBLed::write(LEDColor c) |
jderemer3 | 0:9dc33481ce1b | 34 | { |
jderemer3 | 0:9dc33481ce1b | 35 | _redpin = c.red; |
jderemer3 | 0:9dc33481ce1b | 36 | _greenpin = c.green; |
jderemer3 | 0:9dc33481ce1b | 37 | _bluepin = c.blue; |
jderemer3 | 0:9dc33481ce1b | 38 | } |
jderemer3 | 0:9dc33481ce1b | 39 | |
jderemer3 | 0:9dc33481ce1b | 40 | ////classes could be moved to include file |
jderemer3 | 0:9dc33481ce1b | 41 | // |
jderemer3 | 0:9dc33481ce1b | 42 | // |
jderemer3 | 0:9dc33481ce1b | 43 | ////Setup RGB led using PWM pins and class |
jderemer3 | 0:9dc33481ce1b | 44 | //RGBLed myRGBled(p23,p22,p21); //RGB PWM pins |
jderemer3 | 0:9dc33481ce1b | 45 | // |
jderemer3 | 0:9dc33481ce1b | 46 | ////setup some color objects in flash using const's |
jderemer3 | 0:9dc33481ce1b | 47 | //const LEDColor red(1.0,0.0,0.0); |
jderemer3 | 0:9dc33481ce1b | 48 | //const LEDColor green(0.0,0.2,0.0); |
jderemer3 | 0:9dc33481ce1b | 49 | ////brighter green LED is scaled down to same as red and |
jderemer3 | 0:9dc33481ce1b | 50 | ////blue LED outputs on Sparkfun RGBLED |
jderemer3 | 0:9dc33481ce1b | 51 | //const LEDColor blue(0.0,0.0,1.0); |
jderemer3 | 0:9dc33481ce1b | 52 | //const LEDColor yellow(1.0,0.2,0.0); |
jderemer3 | 0:9dc33481ce1b | 53 | //const LEDColor white(1.0,0.2,1.0); |
jderemer3 | 0:9dc33481ce1b | 54 | // |
jderemer3 | 0:9dc33481ce1b | 55 | //int main() |
jderemer3 | 0:9dc33481ce1b | 56 | //{ |
jderemer3 | 0:9dc33481ce1b | 57 | // while(1) { |
jderemer3 | 0:9dc33481ce1b | 58 | // myRGBled = red; |
jderemer3 | 0:9dc33481ce1b | 59 | // //myRGBled.write(1.0,0.0,0,0); //red |
jderemer3 | 0:9dc33481ce1b | 60 | // wait(2.0); |
jderemer3 | 0:9dc33481ce1b | 61 | // myRGBled = green; |
jderemer3 | 0:9dc33481ce1b | 62 | // //myRGBled.write(0.0,1.0,0.0); //green |
jderemer3 | 0:9dc33481ce1b | 63 | // wait(2.0); |
jderemer3 | 0:9dc33481ce1b | 64 | // myRGBled = blue; |
jderemer3 | 0:9dc33481ce1b | 65 | // //myRGBled.write(0.0,0.0,1.0); //blue |
jderemer3 | 0:9dc33481ce1b | 66 | // wait(2.0); |
jderemer3 | 0:9dc33481ce1b | 67 | // myRGBled = red + green; //yellow = red + green |
jderemer3 | 0:9dc33481ce1b | 68 | // wait(2.0); |
jderemer3 | 0:9dc33481ce1b | 69 | // //white with a slow fade to black dimming effect |
jderemer3 | 0:9dc33481ce1b | 70 | // for (float brightness=1.0; brightness>=0.0001; brightness*=0.99) { |
jderemer3 | 0:9dc33481ce1b | 71 | // myRGBled = white * brightness; |
jderemer3 | 0:9dc33481ce1b | 72 | // wait(0.005); |
jderemer3 | 0:9dc33481ce1b | 73 | // } |
jderemer3 | 0:9dc33481ce1b | 74 | // wait(2.0); |
jderemer3 | 0:9dc33481ce1b | 75 | // } |
jderemer3 | 0:9dc33481ce1b | 76 | //} |