|
|
- #if GARLAND_SUPPORT
-
- #include "../anim.h"
- #include "../color.h"
- #include "../palette.h"
-
- //seq keeps phases: 0..127 increasing, 128..255 decreasing, ends at 255 (steady off)
- //ledstmp keeps color of stars
-
- //------------------------------------------------------------------------------
- class AnimStars : public Anim {
- public:
- AnimStars() : Anim("Stars") {
- }
-
- void SetupImpl() override {
- //inc is (average) interval between appearance of new stars
- inc = secureRandom(2, 5);
-
- //reset all phases
- for (int i = 0; i < numLeds; ++i)
- seq[i] = 255;
- }
-
- void Run() override {
- for (byte i = 0; i < numLeds; i++) {
- byte phi = seq[i];
- if (phi < 254) {
- Color col = ledstmp[i];
- if (phi <= 127) {
- leds[i] = col.brightness(phi << 1);
- } else {
- leds[i] = col.brightness((255 - phi) << 1);
- }
- seq[i] += 2;
- } else {
- leds[i].r = 0;
- leds[i].g = 0;
- leds[i].b = 0;
- }
- }
-
- if (secureRandom(inc) == 0) {
- byte pos = secureRandom(numLeds);
- if (seq[pos] > 250) {
- seq[pos] = 0;
- ledstmp[pos] = palette->getRndInterpColor();
- }
- }
- }
- };
-
- #endif // GARLAND_SUPPORT
|