Light Show library for organic, calm, light display.

Dependencies:   BLE_API mbed nRF51822

Fork of mbed_blinky by Mbed

Committer:
nargetdev
Date:
Mon Feb 01 01:43:59 2016 +0000
Revision:
26:8bc9984c4600
Parent:
25:d48f46d753fd
Child:
27:a55dde8334f3
commented and sane

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nargetdev 24:52319c0a14b8 1 #ifndef LIGHT_SHOW_H
nargetdev 24:52319c0a14b8 2 #define LIGHT_SHOW_H
nargetdev 24:52319c0a14b8 3
nargetdev 25:d48f46d753fd 4 #include "macros.h"
nargetdev 25:d48f46d753fd 5 #include "config.h"
nargetdev 25:d48f46d753fd 6 #include "utility.h"
nargetdev 25:d48f46d753fd 7
nargetdev 25:d48f46d753fd 8 #include "rgb_led.h"
nargetdev 25:d48f46d753fd 9 #include "sinusoid.h"
nargetdev 25:d48f46d753fd 10
nargetdev 25:d48f46d753fd 11 extern Serial pc;
nargetdev 25:d48f46d753fd 12
nargetdev 26:8bc9984c4600 13 const float HYSTERESIS_QUANTITY = PI*2;
nargetdev 26:8bc9984c4600 14 const float INCREMENT = 0.00628f * 2;
nargetdev 25:d48f46d753fd 15
nargetdev 24:52319c0a14b8 16 class LightShow
nargetdev 24:52319c0a14b8 17 {
nargetdev 24:52319c0a14b8 18 public:
nargetdev 25:d48f46d753fd 19 LightShow(Rgb*);
nargetdev 26:8bc9984c4600 20
nargetdev 26:8bc9984c4600 21 /* randomize parameters of the 3 sine waves */
nargetdev 24:52319c0a14b8 22 void randomize_params();
nargetdev 25:d48f46d753fd 23
nargetdev 26:8bc9984c4600 24 /* Displays light show.
nargetdev 26:8bc9984c4600 25 * The light show is a composition of 3 sine waves for 3 channel LEDs
nargetdev 26:8bc9984c4600 26 **/
nargetdev 25:d48f46d753fd 27 void show();
nargetdev 26:8bc9984c4600 28
nargetdev 26:8bc9984c4600 29 /** sanity check for debugging **/
nargetdev 26:8bc9984c4600 30 void simple_show();
nargetdev 25:d48f46d753fd 31
nargetdev 25:d48f46d753fd 32 private:
nargetdev 25:d48f46d753fd 33 Rgb* strip;
nargetdev 25:d48f46d753fd 34 Sinusoid sine_waves[3];
nargetdev 24:52319c0a14b8 35
nargetdev 25:d48f46d753fd 36 // get some randomness
nargetdev 25:d48f46d753fd 37 Timer t;
nargetdev 25:d48f46d753fd 38
nargetdev 24:52319c0a14b8 39 static const float HYSTERESIS_QUANTITY = PI/4;
nargetdev 24:52319c0a14b8 40
nargetdev 25:d48f46d753fd 41 float time; // phase
nargetdev 25:d48f46d753fd 42 uint8_t finished; // bit mask for smooth fade out
nargetdev 25:d48f46d753fd 43 float hysteresis;
nargetdev 25:d48f46d753fd 44 float rgb_c[3];
nargetdev 24:52319c0a14b8 45
nargetdev 25:d48f46d753fd 46 void update_rgb();
nargetdev 24:52319c0a14b8 47 };
nargetdev 24:52319c0a14b8 48
nargetdev 24:52319c0a14b8 49 #endif