From 8b28ecc8cfb9ddbedc334baa0c8ac95f2af9af1e Mon Sep 17 00:00:00 2001 From: fvanroie <15969459+fvanroie@users.noreply.github.com> Date: Fri, 2 Jul 2021 16:05:35 +0200 Subject: [PATCH] Add M5Stack Core2 backlight dimming --- src/dev/esp32/m5stackcore2.cpp | 45 +++++++++++++++++++++++++++++----- src/dev/esp32/m5stackcore2.h | 10 ++++++++ 2 files changed, 49 insertions(+), 6 deletions(-) diff --git a/src/dev/esp32/m5stackcore2.cpp b/src/dev/esp32/m5stackcore2.cpp index 6fa16ee4..5f77dc7d 100644 --- a/src/dev/esp32/m5stackcore2.cpp +++ b/src/dev/esp32/m5stackcore2.cpp @@ -20,6 +20,7 @@ void M5StackCore2::init(void) Axp.SetCHGCurrent(AXP192::kCHG_100mA); Axp.SetLcdVoltage(2800); + _backlight_power = true; Axp.SetBusPowerMode(0); Axp.SetCHGCurrent(AXP192::kCHG_190mA); @@ -44,16 +45,49 @@ void M5StackCore2::init(void) Axp.SetLed(1); } +void M5StackCore2::set_backlight_level(uint8_t level) +{ + _backlight_level = level; + update_backlight(); +} + +uint8_t M5StackCore2::get_backlight_level() +{ + return _backlight_level; +} + +void M5StackCore2::set_backlight_power(bool power) +{ + _backlight_power = power; + update_backlight(); +} + +bool M5StackCore2::get_backlight_power() +{ + return _backlight_power; +} + +void M5StackCore2::update_backlight() +{ + if(_backlight_power) { + uint16_t voltage = map(_backlight_level, 0, 255, 2500, 3300); + Axp.SetLcdVoltage(voltage); + } else { + Axp.SetDCVoltage(2, 2200); + } + // Axp.SetDCDC3(_backlight_power); // LCD backlight +} + void M5StackCore2::get_sensors(JsonDocument& doc) { Esp32Device::get_sensors(doc); - JsonObject sensor = doc.createNestedObject(F("AXP192")); - sensor[F("BattVoltage")] = Axp.GetBatVoltage(); - sensor[F("BattPower")] = Axp.GetBatPower(); - // sensor[F("Batt%")] = Axp.getBattPercentage(); + JsonObject sensor = doc.createNestedObject(F("AXP192")); + sensor[F("BattVoltage")] = Axp.GetBatVoltage(); + sensor[F("BattPower")] = Axp.GetBatPower(); + // sensor[F("Batt%")] = Axp.getBattPercentage(); sensor[F("BattChargeCurrent")] = Axp.GetBatChargeCurrent(); - sensor[F("Temperature")] = Axp.GetTempInAXP192(); + sensor[F("Temperature")] = Axp.GetTempInAXP192(); sensor[F("Charging")] = Axp.isCharging(); } @@ -62,4 +96,3 @@ void M5StackCore2::get_sensors(JsonDocument& doc) dev::M5StackCore2 haspDevice; #endif - diff --git a/src/dev/esp32/m5stackcore2.h b/src/dev/esp32/m5stackcore2.h index b602c37a..97e39828 100644 --- a/src/dev/esp32/m5stackcore2.h +++ b/src/dev/esp32/m5stackcore2.h @@ -14,6 +14,16 @@ class M5StackCore2 : public Esp32Device { public: void init() override; void get_sensors(JsonDocument& doc); + + void set_backlight_level(uint8_t level); + uint8_t get_backlight_level(); + void set_backlight_power(bool power); + bool get_backlight_power(); + void update_backlight(); + + private: + uint8_t _backlight_level; + uint8_t _backlight_power; }; } // namespace dev