Implement display / ledBar brightness

This commit is contained in:
Phat Nguyen
2024-05-01 21:25:35 +07:00
parent d40b1d37a8
commit f08438db46
6 changed files with 110 additions and 2 deletions

View File

@ -414,6 +414,7 @@ static void wdgFeedUpdate(void) {
static void ledBarEnabledUpdate(void) { static void ledBarEnabledUpdate(void) {
if (ag->isOne()) { if (ag->isOne()) {
ag->ledBar.setBrighness(configuration.getLedBarBrightness());
ag->ledBar.setEnable(configuration.getLedBarMode() != LedBarModeOff); ag->ledBar.setEnable(configuration.getLedBarMode() != LedBarModeOff);
} }
} }
@ -721,6 +722,17 @@ static void configUpdateHandle() {
} }
} }
if (configuration.isLedBarBrightnessChanged()) {
ag->ledBar.setBrighness(configuration.getLedBarBrightness());
Serial.println("Set 'LedBarBrightness' brightness: " +
String(configuration.getLedBarBrightness()));
}
if (configuration.isDisplayBrightnessChanged()) {
oledDisplay.setBrightness(configuration.getDisplayBrightness());
Serial.println("Set 'DisplayBrightness' brightness: " +
String(configuration.getDisplayBrightness()));
}
appDispHandler(); appDispHandler();
appLedHandler(); appLedHandler();
} }

View File

@ -125,6 +125,15 @@ void Configuration::loadConfig(void) {
changed = true; changed = true;
logError("LedBarMode invalid, set default: co2"); logError("LedBarMode invalid, set default: co2");
} }
if (config.ledBarBrightness > 100) {
config.ledBarBrightness = 100;
changed = true;
}
if (config.displayBrightness > 100) {
config.displayBrightness = 100;
changed = true;
}
if (changed) { if (changed) {
saveConfig(); saveConfig();
} }
@ -152,6 +161,8 @@ void Configuration::defaultConfig(void) {
config.tvocLearningOffset = 12; config.tvocLearningOffset = 12;
config.noxLearningOffset = 12; config.noxLearningOffset = 12;
config.temperatureUnit = 'c'; config.temperatureUnit = 'c';
config.ledBarBrightness = 100;
config.displayBrightness = 100;
saveConfig(); saveConfig();
} }
@ -581,6 +592,52 @@ bool Configuration::parse(String data, bool isLocal) {
} }
} }
if (JSON.typeof_(root["ledbarBrightness"]) == "number") {
int brightnress = root["ledbarBrightness"];
if (brightnress != config.ledBarBrightness) {
if (brightnress <= 100) {
changed = true;
configLogInfo("ledbarBrightness", String(config.ledBarBrightness),
String(brightnress));
ledBarBrightnessChanged = true;
config.ledBarBrightness = (uint8_t)brightnress;
} else {
failedMessage =
"\"ledbarBrightness\" value invalid: " + String(brightnress);
return false;
}
}
} else {
if (jsonTypeInvalid(root["ledbarBrightness"], "number")) {
failedMessage = jsonTypeInvalidMessage("ledbarBrightness", "number");
jsonInvalid();
return false;
}
}
if (JSON.typeof_(root["displayBrightness"]) == "number") {
int brightness = root["displayBrightness"];
if (brightness != config.displayBrightness) {
if (brightness <= 100) {
changed = true;
displayBrightnessChanged = true;
configLogInfo("displayBrightness", String(config.displayBrightness),
String(brightness));
config.displayBrightness = (uint8_t)brightness;
} else {
failedMessage =
"\"displayBrightness\" value invalid: " + String(brightness);
return false;
}
}
} else {
if (jsonTypeInvalid(root["displayBrightness"], "number")) {
failedMessage = jsonTypeInvalidMessage("displayBrightness", "number");
jsonInvalid();
return false;
}
}
if (changed) { if (changed) {
udpated = true; udpated = true;
saveConfig(); saveConfig();
@ -643,6 +700,12 @@ String Configuration::toString(void) {
/** "postDataToAirGradient" */ /** "postDataToAirGradient" */
root["postDataToAirGradient"] = config.postDataToAirGradient; root["postDataToAirGradient"] = config.postDataToAirGradient;
/** Led bar brighness */
root["ledbarBrightness"] = config.ledBarBrightness;
/** Display brighness */
root["displayBrightness"] = config.displayBrightness;
return JSON.stringify(root); return JSON.stringify(root);
} }
@ -857,3 +920,21 @@ String Configuration::wifiSSID(void) { return "airgradient-" + ag->deviceId(); }
String Configuration::wifiPass(void) { return String("cleanair"); } String Configuration::wifiPass(void) { return String("cleanair"); }
void Configuration::setAirGradient(AirGradient *ag) { this->ag = ag; } void Configuration::setAirGradient(AirGradient *ag) { this->ag = ag; }
int Configuration::getLedBarBrightness(void) { return config.ledBarBrightness; }
bool Configuration::isLedBarBrightnessChanged(void) {
bool changed = ledBarBrightnessChanged;
ledBarBrightnessChanged = false;
return changed;
}
int Configuration::getDisplayBrightness(void) {
return config.displayBrightness;
}
bool Configuration::isDisplayBrightnessChanged(void) {
bool changed = displayBrightnessChanged;
displayBrightnessChanged = false;
return changed;
}

View File

@ -23,6 +23,8 @@ private:
bool displayMode; /** true if enable display */ bool displayMode; /** true if enable display */
uint8_t useRGBLedBar; uint8_t useRGBLedBar;
uint8_t abcDays; uint8_t abcDays;
uint8_t ledBarBrightness;
uint8_t displayBrightness;
int tvocLearningOffset; int tvocLearningOffset;
int noxLearningOffset; int noxLearningOffset;
char temperatureUnit; // 'f' or 'c' char temperatureUnit; // 'f' or 'c'
@ -36,6 +38,8 @@ private:
String failedMessage; String failedMessage;
bool _noxLearnOffsetChanged; bool _noxLearnOffsetChanged;
bool _tvocLearningOffsetChanged; bool _tvocLearningOffsetChanged;
bool ledBarBrightnessChanged = false;
bool displayBrightnessChanged = false;
AirGradient* ag; AirGradient* ag;
@ -89,6 +93,10 @@ public:
String wifiSSID(void); String wifiSSID(void);
String wifiPass(void); String wifiPass(void);
void setAirGradient(AirGradient *ag); void setAirGradient(AirGradient *ag);
bool isLedBarBrightnessChanged(void);
int getLedBarBrightness(void);
bool isDisplayBrightnessChanged(void);
int getDisplayBrightness(void);
}; };
#endif /** _AG_CONFIG_H_ */ #endif /** _AG_CONFIG_H_ */

View File

@ -94,6 +94,8 @@ bool OledDisplay::begin(void) {
return false; return false;
} }
setBrightness(config.getDisplayBrightness());
isBegin = true; isBegin = true;
logInfo("begin"); logInfo("begin");
return true; return true;
@ -308,3 +310,7 @@ void OledDisplay::showWiFiQrCode(String content, String label) {
DISP()->drawStr(x_start, 60, label.c_str()); DISP()->drawStr(x_start, 60, label.c_str());
} while (DISP()->nextPage()); } while (DISP()->nextPage());
} }
void OledDisplay::setBrightness(int percent) {
DISP()->setContrast((127 * percent) / 100);
}

View File

@ -32,6 +32,7 @@ public:
void showDashboard(void); void showDashboard(void);
void showDashboard(const char *status); void showDashboard(const char *status);
void showWiFiQrCode(String content, String label); void showWiFiQrCode(String content, String label);
void setBrightness(int percent);
}; };
#endif /** _AG_OLED_DISPLAY_H_ */ #endif /** _AG_OLED_DISPLAY_H_ */

View File

@ -62,13 +62,13 @@ void LedBar::setColor(uint8_t red, uint8_t green, uint8_t blue, int ledNum) {
/** /**
* @brief Set LED brightness apply for all LED bar * @brief Set LED brightness apply for all LED bar
* *
* @param brightness Brightness (0 - 255) * @param brightness Brightness (0 - 100)%
*/ */
void LedBar::setBrighness(uint8_t brightness) { void LedBar::setBrighness(uint8_t brightness) {
if (this->isBegin() == false) { if (this->isBegin() == false) {
return; return;
} }
pixel()->setBrightness(brightness); pixel()->setBrightness((brightness * 0xff) / 100);
} }
/** /**