хочется чтобы лента плавно изменяла яркость
для этого нужно менять скважность ШИМ не один раз скачком от текущего значения к целевому, а постепенно, за несколько шагов. С постоянной скоростью -- примерно так:
void set_pwm_smooth(int new_pwm)
{
static const int pwm_step = ...; // шаг изменения ШИМ
static const int pwm_step_time = ...; // время одного шага изменения ШИМ
static int old_pwm;
int pwm = old_pwm;
while (pwm != new_pwm) {
int next_pwm = pwm + (pwm < new_pwm ? pwm_step : -pwm_step);
if ((pwm < new_pwm && next_pwm > new_pwm) ||
(pwm > new_pwm && next_pwm < new_pwm))
pwm = new_pwm;
else
pwm = next_pwm;
analogWrite(LEDPIN, pwm);
delay(pwm_step_time);
}
old_pwm = new_pwm;
}