From c1e24d633b542d5b9266cb31f9066ad1b02bf50b Mon Sep 17 00:00:00 2001 From: bartschdo76253 Date: Mon, 5 Jul 2021 15:54:35 +0200 Subject: [PATCH] activate / inactivate idle brightess w LDR --- lib/treppe/treppe.cpp | 17 ++++++++++++++--- lib/treppe/treppe.h | 6 ++++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/lib/treppe/treppe.cpp b/lib/treppe/treppe.cpp index 9cb1e85..5c9dd1d 100644 --- a/lib/treppe/treppe.cpp +++ b/lib/treppe/treppe.cpp @@ -68,13 +68,13 @@ void Treppe::start_animation() if (fsm_outputs.dimmrichtung == DR_AUFDIMMEN) { - start_pwm = idle_brightness; + start_pwm = idle_bright_internal; ziel_pwm = active_brightness; } else { start_pwm = active_brightness; - ziel_pwm = idle_brightness; + ziel_pwm = idle_bright_internal; } current_tick = 0; @@ -192,7 +192,7 @@ bool Treppe::check_ldr() active = 1; if (ldr > ldr_schwelle + LDR_HYS) active = 0; - + activate_idle_pwm(active); return active; } @@ -257,6 +257,17 @@ void Treppe::set_idle_pwm(uint16_t _idle_brightness) berechne_dimmer(); Serial.printf("Treppe: idle_brightness=%d\n", idle_brightness); } + +void Treppe::activate_idle_pwm(bool active){ + static uint8_t former_active = 0; + + if(active != former_active && fsm_outputs.status == ST_RUHEZUSTAND){ + idle_bright_internal = idle_brightness * active; + // Dimming Function for all LEDS ? + pwmController.setAllChannelsPWM(idle_bright_internal); + former_active = active; + } +} void Treppe::set_active_pwm(uint16_t _active_brightness) { active_brightness = _active_brightness; diff --git a/lib/treppe/treppe.h b/lib/treppe/treppe.h index ea3d0c6..cb7f0d5 100644 --- a/lib/treppe/treppe.h +++ b/lib/treppe/treppe.h @@ -7,7 +7,7 @@ #define LDR_HYS 5.0 // Hysteresis for switching off FSM [lux] -#define SENSOR_OBEN 2 +#define SENSOR_OBEN 16 #define SENSOR_UNTEN 12 #define OE 14 @@ -17,7 +17,8 @@ class Treppe { private: const uint8_t stufen; uint16_t time_per_stair = 300; // dimmtime per stair [ms] - uint16_t idle_brightness = 0; + uint16_t idle_brightness = 100; + uint16_t idle_bright_internal = 0; uint16_t active_brightness = 500; uint16_t ldr_schwelle = 7; // activation value for FSM [lx] @@ -79,6 +80,7 @@ public: // Parameter section void set_idle_pwm(uint16_t _idle_brightness); + void activate_idle_pwm(bool active); void set_active_pwm(uint16_t _active_brightness); void set_time_per_stair(uint16_t _time_per_stair); }; \ No newline at end of file