Light Show library for organic, calm, light display.

Dependencies:   BLE_API mbed nRF51822

Fork of mbed_blinky by Mbed

Revision:
23:4bb74b53e112
Parent:
22:b618d55e9c9b
Child:
24:52319c0a14b8
--- a/main.cpp	Fri Jan 29 19:39:07 2016 +0000
+++ b/main.cpp	Fri Jan 29 20:22:02 2016 +0000
@@ -4,6 +4,9 @@
 //#include "UARTService.h"
 #include <string>
 
+
+#include "rgb_led.h"
+
 #define NEED_CONSOLE_OUTPUT 1 /* Set this if you need debug messages on the console;
                                * it will have an impact on code-size and power consumption. */
 
@@ -140,144 +143,7 @@
     motionState = 1;
 }
 
-class Rgb {
-private:
-    // PI macros
-    static const float INCREMENT = 0.00628*4;
-    static const float HPI = 1.571;
-    static const float PI = 3.1416;
-    static const float HYSTERESIS_QUANTITY = PI/4;
 
-    static const float RWAIT = 0;
-    static const float GWAIT = PI/8;
-    static const float BWAIT = PI/4;
-    float WAIT [3];
-    float SCALE [3];
-    
-//    static const float SCALE[3] = {
-    
-    // channel operators
-    float rgb_c[3];
-    float in;
-    uint8_t rgb;
-    float hysteresis;
-    
-    uint8_t i;
-    bool mov;
-    
-    void randomize_params() {
-        float rand_seed = t.read();
-        pc.printf("%f\n\r", rand_seed);
-        int rand_int = t.read() * 7919;
-        
-        time_t seconds = time(NULL);
-        pc.printf("Time as seconds since January 1, 1970 = %d\n\r", seconds);
-        
-        srand(rand_int);
-        pc.printf("A random %d\r\n", rand() );
-        
-        // generate random values in 0.0 - 1.0
-        uint8_t blah;
-        for (int j = 0; j < 3; j++) {
-            srand(rand_int+j);
-            blah = rand();
-            SCALE[j] = (float) blah;
-            SCALE[j] /= (float) 0xff;
-            SCALE[j] = SCALE[j]*HPI + 1;
-            pc.printf("scale %d, %f\n\r", i, SCALE[i]);
-            srand(blah+j % 17 + 7);
-            blah = rand();
-            WAIT[j] = (float) blah;
-            WAIT[j] /= (float) 0xff;
-            WAIT[j] *= HPI;
-            pc.printf("wait %d, %f\n\r", i, WAIT[i]);
-        }
-        rgb = 0x0;
-        printf("Params Initialized\r\n");
-    }
-    
-    void update_rgb_values () {
-//        printf("Updating RGB values...\r\n");
-        for (i=0; i<3; i++){
-            if (!(rgb & (0x1 << i) )){
-                if ( in > WAIT[i]){
-//                    printf("%d, %d, result: %d\r\n", rgb, (0x1 << i), (!(rgb & (0x1 << i)) ) );
-                    rgb_c[i] = -cos((in - WAIT[i])*SCALE[i]) + 1;
-                }
-                else {
-                    rgb_c[i] = 0.0;
-                }
-            }
-            else
-                rgb_c[i] = 0.0;
-            pc.printf("%f\t",rgb_c[i]);
-        }
-        pc.printf("\n\r");
-//        exit(0);
-    }
-
-void write_rgb (){
-    red.write(rgb_c[0]/2.0);
-    green.write(rgb_c[1]/2.0);
-    blue.write(rgb_c[2]/2.0);
-}
-    
-public:
-//Rgb();
-
-
-void show() {
-    pc.printf("show\r\n");
-    // randomize the delay and scale values
-    randomize_params();
-    printf("params initialized:\n\r");
-    printf("WAIT:\t%f\t%f\t%f\n\r", WAIT[0], WAIT[1], WAIT[2]);
-    printf("SCALE:\t%f\t%f\t%f\n\r", SCALE[0], SCALE[1], SCALE[2]);
-    for (in = 0; in < hysteresis || rgb != 0x7; in = in + INCREMENT){
-        #ifdef MKIT
-            bool mov = motion;
-        #else
-            bool mov = !motion;
-        #endif
-        if (mov){
-            hysteresis = in + HYSTERESIS_QUANTITY;
-        }
-        
-        // update rgb
-        update_rgb_values();
-        
-        // write values
-        write_rgb();
-    
-        
-        if (in > hysteresis){
-            if (rgb_c[0] < 0.01)
-                rgb |= 0x1;
-            if (rgb_c[1] < 0.01)
-                rgb |= 0x2;
-            if (rgb_c[2] < 0.01)
-                rgb |= 0x4;
-        }
-        
-      }
-    }
-};
-
-
-void channel_check(){
-    
-    red.write(1.0f);
-    wait(.5);
-    red.write(0.0f);
-    
-    green.write(1.0f);
-    wait(.5);
-    green.write(0.0f);
-    
-    blue.write(1.0f);
-    wait(.5);
-    blue.write(0.0f);
-}