diff --git a/ampel-firmware/led_effects.cpp b/ampel-firmware/led_effects.cpp index 061b6f869b2c57494dfdbdbe3495b8a90736ef05..45b8c0b7ecbcecc5a91225e1ce7d055eb6da8ba4 100644 --- a/ampel-firmware/led_effects.cpp +++ b/ampel-firmware/led_effects.cpp @@ -168,17 +168,18 @@ namespace led_effects { } } - void showRainbowWheel(uint16_t duration_ms, uint16_t hue_increment) { + void showRainbowWheel(uint16_t duration_ms) { if (config::night_mode) { return; } static uint16_t wheel_offset = 0; + static uint16_t sine_offset = 0; unsigned long t0 = millis(); pixels.setBrightness(config::max_brightness); while (millis() - t0 < duration_ms) { for (int i = 0; i < NUMPIXELS; i++) { pixels.setPixelColor(i, pixels.ColorHSV(i * 65535 / NUMPIXELS + wheel_offset)); - wheel_offset += hue_increment; + wheel_offset += (pixels.sine8(sine_offset++ / 50) - 127) / 2; } pixels.show(); delay(10); diff --git a/ampel-firmware/led_effects.h b/ampel-firmware/led_effects.h index 96367ef5f2909d38377e2441f91d4e2e1abe2198..a910d307f7c6294db889e704f745c3777136d19b 100644 --- a/ampel-firmware/led_effects.h +++ b/ampel-firmware/led_effects.h @@ -29,7 +29,7 @@ namespace led_effects { int countdownToZero(); void showWaitingLED(uint32_t color); void showKITTWheel(uint32_t color, uint16_t duration_s = 2); - void showRainbowWheel(uint16_t duration_ms = 1000, uint16_t hue_increment = 50); + void showRainbowWheel(uint16_t duration_ms = 1000); void displayCO2color(uint16_t co2); } #endif