ECE 4180 Final
Dependencies: mbed wave_player mbed-rtos C12832_lcd 4DGL-uLCD-SE LCD_fonts SDFileSystem
LED.hpp
- Committer:
- jcrane32
- Date:
- 2019-12-05
- Revision:
- 18:c760ba93b881
- Parent:
- 7:15fdc55dbf66
- Child:
- 19:d65f9fb1023b
File content as of revision 18:c760ba93b881:
//class for 3 PWM color values for RGBLED class LEDColor { public: LEDColor(float r, float g, float b); float red; float green; float blue; }; LEDColor:: LEDColor(float r, float g, float b) : red(r), green(g), blue(b) { } //Operator overload to adjust brightness with no color change LEDColor operator * (const LEDColor& x, const float& b) { return LEDColor(x.red*b,x.green*b,x.blue*b); } //Operator overload to add colors LEDColor operator + (const LEDColor& x, const LEDColor& y) { return LEDColor(x.red+y.red,x.green+y.green,x.blue+y.blue); } //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; } 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); const LEDColor black(0.0,0.0,0.0);