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