mirror of
https://github.com/gunner47/GyverLamp.git
synced 2025-08-06 16:47:17 +03:00
94 lines
3.7 KiB
C++
94 lines
3.7 KiB
C++
uint32_t effTimer;
|
|
|
|
void effectsTick()
|
|
{
|
|
if (!dawnFlag)
|
|
{
|
|
if (ONflag && (millis() - effTimer >= ((currentMode < 5 || currentMode > 13) ? modes[currentMode].Speed : 50)))
|
|
{
|
|
effTimer = millis();
|
|
switch (currentMode)
|
|
{
|
|
case EFF_SPARKLES: sparklesRoutine(); break;
|
|
case EFF_FIRE: fireRoutine(true); break;
|
|
case EFF_WHITTE_FIRE: fireRoutine(false); break;
|
|
case EFF_RAINBOW_VER: rainbowVerticalRoutine(); break;
|
|
case EFF_RAINBOW_HOR: rainbowHorizontalRoutine(); break;
|
|
case EFF_RAINBOW_DIAG: rainbowDiagonalRoutine(); break;
|
|
case EFF_COLORS: colorsRoutine(); break;
|
|
case EFF_MADNESS: madnessNoiseRoutine(); break;
|
|
case EFF_CLOUDS: cloudsNoiseRoutine(); break;
|
|
case EFF_LAVA: lavaNoiseRoutine(); break;
|
|
case EFF_PLASMA: plasmaNoiseRoutine(); break;
|
|
case EFF_RAINBOW: rainbowNoiseRoutine(); break;
|
|
case EFF_RAINBOW_STRIPE: rainbowStripeNoiseRoutine(); break;
|
|
case EFF_ZEBRA: zebraNoiseRoutine(); break;
|
|
case EFF_FOREST: forestNoiseRoutine(); break;
|
|
case EFF_OCEAN: oceanNoiseRoutine(); break;
|
|
case EFF_COLOR: colorRoutine(); break;
|
|
case EFF_SNOW: snowRoutine(); break;
|
|
case EFF_SNOWSTORM: snowStormRoutine(); break;
|
|
case EFF_STARFALL: starfallRoutine(); break;
|
|
case EFF_MATRIX: matrixRoutine(); break;
|
|
case EFF_LIGHTERS: lightersRoutine(); break;
|
|
case EFF_LIGHTER_TRACES: ballsRoutine(); break;
|
|
case EFF_PAINTBALL: lightBallsRoutine(); break;
|
|
case EFF_CUBE: ballRoutine(); break;
|
|
case EFF_WHITE_COLOR: whiteColorStripeRoutine(); break;
|
|
default: break;
|
|
}
|
|
FastLED.show();
|
|
}
|
|
}
|
|
}
|
|
|
|
void changePower()
|
|
{
|
|
if (ONflag)
|
|
{
|
|
effectsTick();
|
|
for (uint8_t i = 0U; i < modes[currentMode].Brightness; i = constrain(i + 8, 0, modes[currentMode].Brightness))
|
|
{
|
|
FastLED.setBrightness(i);
|
|
delay(1);
|
|
FastLED.show();
|
|
}
|
|
FastLED.setBrightness(modes[currentMode].Brightness);
|
|
delay(2);
|
|
FastLED.show();
|
|
}
|
|
else
|
|
{
|
|
effectsTick();
|
|
for (uint8_t i = modes[currentMode].Brightness; i > 0; i = constrain(i - 8, 0, modes[currentMode].Brightness))
|
|
{
|
|
FastLED.setBrightness(i);
|
|
delay(1);
|
|
FastLED.show();
|
|
}
|
|
FastLED.clear();
|
|
delay(2);
|
|
FastLED.show();
|
|
}
|
|
|
|
#if defined(MOSFET_PIN) && defined(MOSFET_LEVEL) // установка сигнала в пин, управляющий MOSFET транзистором, соответственно состоянию вкл/выкл матрицы
|
|
digitalWrite(MOSFET_PIN, ONflag ? MOSFET_LEVEL : !MOSFET_LEVEL);
|
|
#endif
|
|
|
|
TimerManager::TimerRunning = false;
|
|
TimerManager::TimerHasFired = false;
|
|
TimerManager::TimeToFire = 0ULL;
|
|
|
|
if (FavoritesManager::UseSavedFavoritesRunning == 0U) // если выбрана опция Сохранять состояние (вкл/выкл) "избранного", то ни выключение модуля, ни выключение матрицы не сбрасывают текущее состояние (вкл/выкл) "избранного"
|
|
{
|
|
FavoritesManager::TurnFavoritesOff();
|
|
}
|
|
|
|
#if (USE_MQTT)
|
|
if (espMode == 1U)
|
|
{
|
|
MqttManager::needToPublish = true;
|
|
}
|
|
#endif
|
|
}
|