From b13b1a6c7151a4b002845af700bee55e5e177e91 Mon Sep 17 00:00:00 2001
From: Eric Duminil <eric.duminil@gmail.com>
Date: Wed, 5 May 2021 20:45:12 +0200
Subject: [PATCH] led_effects: rainbow wheel in both directions

---
 ampel-firmware/led_effects.cpp | 5 +++--
 ampel-firmware/led_effects.h   | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/ampel-firmware/led_effects.cpp b/ampel-firmware/led_effects.cpp
index 061b6f8..45b8c0b 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 96367ef..a910d30 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
-- 
GitLab