void candlesEffect() {
const short FLAME_PWM_RANGE = 2 * LED_MAX_PWM / 3;
const short FLAME_SPEED = 400;
const byte pins[] = {LEDS_LEFT_PIN, LEDS_RIGHT_PIN};
static short targetPwm[sizeof(pins)];
static short currentPwm[sizeof(pins)];
static unsigned long prevMicros[sizeof(pins)];
for (int i = 0; i < sizeof(pins); i++) {
if (micros() - prevMicros[i] > FLAME_SPEED) {
prevMicros[i] = micros();
if (currentPwm[i] == targetPwm[i]) {
targetPwm[i] = random(LED_MAX_PWM - FLAME_PWM_RANGE, LED_MAX_PWM);
}
currentPwm[i] += targetPwm[i] < currentPwm[i] ? -1 : 1;
analogWrite(pins[i], currentPwm[i]);
}
}
}
from SunriseClock/SunriseClock.ino at main · JAndrassy/SunriseClock · GitHub