#if GARLAND_SUPPORT #include "../anim.h" #include "../palette.h" //------------------------------------------------------------------------------ class AnimWaves : public Anim { private: int bra_phase; int bra_phase_speed; byte bra_speed; byte bra_min; int sign; public: AnimWaves() : Anim("Waves") { } void SetupImpl() override { curColor = palette->getRndInterpColor().max_bright(); glowSetUp(); sign = braPhaseSpd > 128 ? -1 : 1; bra_phase = secureRandom(255); bra_phase_speed = secureRandom(2, 5); bra_speed = secureRandom(4, 12); bra_min = secureRandom(20, 30); } void Run() override { int bra = bra_phase; int8_t bra_inc = -sign * bra_speed; for (int i = 0; i < numLeds; ++i) { leds[i] = curColor; glowForEachLed(i); leds[i] = leds[i].brightness((byte)bra); bra += bra_inc; if (bra > 255 || bra < bra_min) { bra_inc = -bra_inc; bra = bra > 255 ? 255 : bra_min; } } glowRun(); bra_phase += bra_phase_speed; if (bra_phase > 255 || bra_phase < bra_min) { bra_phase_speed = -bra_phase_speed; sign = -sign; bra_phase = bra_phase > 255 ? 255 : bra_min; } } }; #endif // GARLAND_SUPPORT