From f35bc4feaad94dcc8c0dc30643b52e7cd79f8974 Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Fri, 17 May 2024 11:52:22 +0700 Subject: [PATCH 1/3] Fix LED bar flickers --- examples/OneOpenAir/OneOpenAir.ino | 36 +++++++++++++++++++++++++----- src/AgConfigure.cpp | 9 ++++++++ src/AgConfigure.h | 2 ++ 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index ed911d5..487ed6a 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -462,6 +462,7 @@ static void ledBarEnabledUpdate(void) { ag->ledBar.setBrighness(brightness); ag->ledBar.setEnable(configuration.getLedBarMode() != LedBarModeOff); } + ag->ledBar.show(); } } @@ -804,10 +805,6 @@ static void configUpdateHandle() { return; } - if (ag->isOne()) { - ledBarEnabledUpdate(); - stateMachine.executeLedBarTest(); - } stateMachine.executeCo2Calibration(); String mqttUri = configuration.getMqttBrokerUri(); @@ -843,15 +840,42 @@ static void configUpdateHandle() { if (ag->isOne()) { if (configuration.isLedBarBrightnessChanged()) { - ag->ledBar.setBrighness(configuration.getLedBarBrightness()); - Serial.println("Set 'LedBarBrightness' brightness: " + + if (configuration.getLedBarBrightness() == 0) { + ag->ledBar.setEnable(false); + } else { + if (configuration.getLedBarMode() != LedBarMode::LedBarModeOff) { + ag->ledBar.setEnable(true); + } + ag->ledBar.setBrighness(configuration.getLedBarBrightness()); + } + ag->ledBar.show(); + Serial.println("Set 'ledBarBrightness' brightness: " + String(configuration.getLedBarBrightness())); } + + if (configuration.isLedBarModeChanged()) { + Serial.println("Set 'ledBarMode' " + String(configuration.getLedBarMode())); + Serial.println("Get 'ledBarBrightness' " + String(configuration.getLedBarBrightness())); + if (configuration.getLedBarBrightness() == 0) { + ag->ledBar.setEnable(false); + } else { + if(configuration.getLedBarMode() == LedBarMode::LedBarModeOff) { + ag->ledBar.setEnable(false); + } else { + ag->ledBar.setEnable(true); + ag->ledBar.setBrighness(configuration.getLedBarBrightness()); + } + } + ag->ledBar.show(); + } + if (configuration.isDisplayBrightnessChanged()) { oledDisplay.setBrightness(configuration.getDisplayBrightness()); Serial.println("Set 'DisplayBrightness' brightness: " + String(configuration.getDisplayBrightness())); } + + stateMachine.executeLedBarTest(); } fwNewVersion = configuration.newFirmwareVersion(); diff --git a/src/AgConfigure.cpp b/src/AgConfigure.cpp index a52dbf9..5eb827c 100644 --- a/src/AgConfigure.cpp +++ b/src/AgConfigure.cpp @@ -372,6 +372,7 @@ bool Configuration::parse(String data, bool isLocal) { } } + _ledBarModeChanged = false; if (JSON.typeof_(root[jprop_ledBarMode]) == "string") { String mode = root[jprop_ledBarMode]; if (mode == getLedBarModeName(LedBarMode::LedBarModeCO2) || @@ -380,6 +381,7 @@ bool Configuration::parse(String data, bool isLocal) { String oldMode = jconfig[jprop_ledBarMode]; if (mode != oldMode) { jconfig[jprop_ledBarMode] = mode; + _ledBarModeChanged = true; changed = true; } } else { @@ -559,6 +561,7 @@ bool Configuration::parse(String data, bool isLocal) { } } + ledBarBrightnessChanged = false; if (JSON.typeof_(root[jprop_ledBarBrightness]) == "number") { int value = root[jprop_ledBarBrightness]; int oldValue = jconfig[jprop_ledBarBrightness]; @@ -1148,6 +1151,12 @@ void Configuration::setOfflineModeWithoutSave(bool offline) { _offlineMode = offline; } +bool Configuration::isLedBarModeChanged(void) { + bool changed = _ledBarModeChanged; + _ledBarModeChanged = false; + return changed; +} + bool Configuration::isDisplayBrightnessChanged(void) { bool changed = displayBrightnessChanged; displayBrightnessChanged = false; diff --git a/src/AgConfigure.h b/src/AgConfigure.h index c3eda36..24473ec 100644 --- a/src/AgConfigure.h +++ b/src/AgConfigure.h @@ -18,6 +18,7 @@ private: bool displayBrightnessChanged = false; String otaNewFirmwareVersion; bool _offlineMode = false; + bool _ledBarModeChanged = false; AirGradient* ag; @@ -80,6 +81,7 @@ public: bool isOfflineMode(void); void setOfflineMode(bool offline); void setOfflineModeWithoutSave(bool offline); + bool isLedBarModeChanged(void); }; #endif /** _AG_CONFIG_H_ */ From 59880f4be546b0e0fbba733f2168cf6e9377af8e Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Wed, 22 May 2024 11:17:11 +0700 Subject: [PATCH 2/3] fix typo --- examples/OneOpenAir/OneOpenAir.ino | 6 +++--- src/Main/LedBar.cpp | 2 +- src/Main/LedBar.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index 487ed6a..349c96c 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -459,7 +459,7 @@ static void ledBarEnabledUpdate(void) { if ((brightness == 0) || (configuration.getLedBarMode() == LedBarModeOff)) { ag->ledBar.setEnable(false); } else { - ag->ledBar.setBrighness(brightness); + ag->ledBar.setBrightness(brightness); ag->ledBar.setEnable(configuration.getLedBarMode() != LedBarModeOff); } ag->ledBar.show(); @@ -846,7 +846,7 @@ static void configUpdateHandle() { if (configuration.getLedBarMode() != LedBarMode::LedBarModeOff) { ag->ledBar.setEnable(true); } - ag->ledBar.setBrighness(configuration.getLedBarBrightness()); + ag->ledBar.setBrightness(configuration.getLedBarBrightness()); } ag->ledBar.show(); Serial.println("Set 'ledBarBrightness' brightness: " + @@ -863,7 +863,7 @@ static void configUpdateHandle() { ag->ledBar.setEnable(false); } else { ag->ledBar.setEnable(true); - ag->ledBar.setBrighness(configuration.getLedBarBrightness()); + ag->ledBar.setBrightness(configuration.getLedBarBrightness()); } } ag->ledBar.show(); diff --git a/src/Main/LedBar.cpp b/src/Main/LedBar.cpp index b00f36c..63aed35 100644 --- a/src/Main/LedBar.cpp +++ b/src/Main/LedBar.cpp @@ -64,7 +64,7 @@ void LedBar::setColor(uint8_t red, uint8_t green, uint8_t blue, int ledNum) { * * @param brightness Brightness (0 - 100)% */ -void LedBar::setBrighness(uint8_t brightness) { +void LedBar::setBrightness(uint8_t brightness) { if (this->isBegin() == false) { return; } diff --git a/src/Main/LedBar.h b/src/Main/LedBar.h index 777ed24..576951a 100644 --- a/src/Main/LedBar.h +++ b/src/Main/LedBar.h @@ -19,7 +19,7 @@ public: void begin(void); void setColor(uint8_t red, uint8_t green, uint8_t blue, int ledNum); void setColor(uint8_t red, uint8_t green, uint8_t blue); - void setBrighness(uint8_t brightness); + void setBrightness(uint8_t brightness); int getNumberOfLeds(void); void show(void); void clear(void); From e9224a5de08e9028835fb7ec6333cc45273e5927 Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Wed, 29 May 2024 07:58:49 +0700 Subject: [PATCH 3/3] Remove test logging message --- examples/OneOpenAir/OneOpenAir.ino | 6 ------ 1 file changed, 6 deletions(-) diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index 349c96c..71a318b 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -849,13 +849,9 @@ static void configUpdateHandle() { ag->ledBar.setBrightness(configuration.getLedBarBrightness()); } ag->ledBar.show(); - Serial.println("Set 'ledBarBrightness' brightness: " + - String(configuration.getLedBarBrightness())); } if (configuration.isLedBarModeChanged()) { - Serial.println("Set 'ledBarMode' " + String(configuration.getLedBarMode())); - Serial.println("Get 'ledBarBrightness' " + String(configuration.getLedBarBrightness())); if (configuration.getLedBarBrightness() == 0) { ag->ledBar.setEnable(false); } else { @@ -871,8 +867,6 @@ static void configUpdateHandle() { if (configuration.isDisplayBrightnessChanged()) { oledDisplay.setBrightness(configuration.getDisplayBrightness()); - Serial.println("Set 'DisplayBrightness' brightness: " + - String(configuration.getDisplayBrightness())); } stateMachine.executeLedBarTest();