Don't fade for brightness slider changes

custom
jacqueline 2 years ago
parent f2bb2e2528
commit 773f285767
  1. 12
      src/drivers/display.cpp
  2. 2
      src/drivers/include/display.hpp

@ -198,20 +198,26 @@ Display::~Display() {
auto Display::SetDisplayOn(bool enabled) -> void { auto Display::SetDisplayOn(bool enabled) -> void {
display_on_ = enabled; display_on_ = enabled;
int new_duty = display_on_ ? brightness_ : 0; int new_duty = display_on_ ? brightness_ : 0;
SetDutyCycle(new_duty); SetDutyCycle(new_duty, true);
} }
auto Display::SetBrightness(uint_fast8_t percent) -> void { auto Display::SetBrightness(uint_fast8_t percent) -> void {
brightness_ = brightness_ =
std::pow(static_cast<double>(percent) / 100.0, 2.8) * 1024.0 + 0.5; std::pow(static_cast<double>(percent) / 100.0, 2.8) * 1024.0 + 0.5;
if (display_on_) { if (display_on_) {
SetDutyCycle(brightness_); SetDutyCycle(brightness_, false);
} }
} }
auto Display::SetDutyCycle(uint_fast8_t new_duty) -> void { auto Display::SetDutyCycle(uint_fast8_t new_duty, bool fade) -> void {
if (fade) {
ledc_set_fade_with_time(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, new_duty, 100); ledc_set_fade_with_time(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, new_duty, 100);
ledc_fade_start(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, LEDC_FADE_NO_WAIT); ledc_fade_start(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, LEDC_FADE_NO_WAIT);
} else {
ESP_ERROR_CHECK(
ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, new_duty));
ESP_ERROR_CHECK(ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0));
}
} }
void Display::SendInitialisationSequence(const uint8_t* data) { void Display::SendInitialisationSequence(const uint8_t* data) {

@ -76,7 +76,7 @@ class Display {
const uint8_t* data, const uint8_t* data,
size_t length); size_t length);
auto SetDutyCycle(uint_fast8_t) -> void; auto SetDutyCycle(uint_fast8_t, bool) -> void;
}; };
} // namespace drivers } // namespace drivers

Loading…
Cancel
Save