From efc613be5c9fa16c6f86eedc05380102d51e1e8d Mon Sep 17 00:00:00 2001
From: Eric Duminil <eric.duminil@gmail.com>
Date: Sun, 27 Dec 2020 00:22:18 +0100
Subject: [PATCH] Trying to use integer sine for LED breathing

---
 led_effects.cpp | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/led_effects.cpp b/led_effects.cpp
index e8523cb..c85ec6e 100644
--- a/led_effects.cpp
+++ b/led_effects.cpp
@@ -11,10 +11,9 @@ namespace config {
 /*****************************************************************
  * Configuration  (calculated from above values)                 *
  *****************************************************************/
-namespace config //TODO: Use a class instead. NightMode could then be another state.
+namespace config //NOTE: Use a class instead? NightMode could then be another state.
 {
-  const float average_brightness = 0.5 * (config::max_brightness + config::min_brightness);
-  const float brightness_amplitude = 0.5 * (config::max_brightness - config::min_brightness);
+  const uint8_t brightness_amplitude = config::max_brightness - config::min_brightness;
   bool night_mode = false;
 }
 
@@ -176,9 +175,9 @@ namespace LedEffects {
   void breathe(int16_t co2) {
     if (!config::night_mode) {
       static uint16_t breathing_offset = 0;
-      //TODO: use integer sine
-      pixels.setBrightness(
-          static_cast<int>(config::average_brightness + cos(breathing_offset * 0.1) * config::brightness_amplitude));
+      uint16_t brightness = config::min_brightness
+          + pixels.sine8(breathing_offset * 3) * config::brightness_amplitude / 255;
+      pixels.setBrightness(brightness);
       pixels.show();
       breathing_offset++;
     }
-- 
GitLab