Вам нужно установить глобальные переменные:
// Глобальная область действия:
const float _brightInterval = 1.0f;
const float _maxBright = 255.0f; //i'm not sure whats your max bright here
const float _minBright = 1.0f;
float _brightness = _maxBright;
И вместо строк я бы использовал состояния. Это быстрее и экономит память.
enum states
{
hold,
down,
up
};
states _state;
, затем в l oop сделайте что-то вроде этого:
switch (_state)
{
case states::down:
_brightness -= _brightInterval;
break;
case states::up:
_brightness += _brightInterval;
break;
case states::hold:
_brightness -= _brightInterval / 10.0f; //hold makes it go down but in a lower rate.
default:
break;
}
if (_brightness >= _maxBright)
_state = states::hold;
else if (_brightness <= (_maxBright - 50.0f) && _state == states::hold)
_state = states::down;
else if (_brightness <= _minBright)
_state = states::up;
FastLED.setBrightness(_brightness);
Попробуйте изменить эти значения для достижения желаемого эффекта. (_MaxBright - 50.0f) во втором if, это шаг, когда он начинает ускоряться вниз. измените его на возможно (_maxBright - 10.0f)