From ba2ef553122ad565b7f876c6d254efdb499920f7 Mon Sep 17 00:00:00 2001 From: fvanroie Date: Sun, 24 Apr 2022 03:20:03 +0200 Subject: [PATCH] Use ledcWrite instead of analogWrite on ESP32 --- src/sys/gpio/hasp_gpio.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/sys/gpio/hasp_gpio.cpp b/src/sys/gpio/hasp_gpio.cpp index dd8e6570..ea23cd59 100644 --- a/src/sys/gpio/hasp_gpio.cpp +++ b/src/sys/gpio/hasp_gpio.cpp @@ -459,7 +459,20 @@ static inline bool gpio_set_analog_value(hasp_gpio_config_t* gpio) ledcWrite(gpio->channel, val); // 12 bits return true; // sent -#elif defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_ESP8266) +#elif defined(ARDUINO_ARCH_ESP32) + + if(gpio->max == 255) + val = SCALE_8BIT_TO_10BIT(gpio->val); + else if(gpio->max == 4095) + val = gpio->val >> 2; + + if(!gpio->power) val = 0; + if(gpio->inverted) val = 1023 - val; + + ledcWrite(gpio->channel, val); // 10 bits + return true; // sent + +#elif defined(ARDUINO_ARCH_ESP8266) if(gpio->max == 255) val = SCALE_8BIT_TO_10BIT(gpio->val);