ECE 4180 Final

Dependencies:   mbed wave_player mbed-rtos C12832_lcd 4DGL-uLCD-SE LCD_fonts SDFileSystem

Revision:
7:15fdc55dbf66
Child:
19:d65f9fb1023b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LED.hpp	Thu Dec 05 03:21:55 2019 +0000
@@ -0,0 +1,70 @@
+//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);
\ No newline at end of file