#include "LED0.h" CLED0 led0; void CLED0::setup(uint8_t _pin, uint16_t _freq, uint16_t _channel) { freq = _freq; channel = _channel; pin = _pin; bPWMMode = true; bAC = false; bLoad = false; duty = 0; ledcAttachChannel(pin, _freq, PWM_RESOLUTION, channel); setDuty(duty); }; MY_IRAM_ATTR void CLED0::setFreq(uint16_t _freq) { if (freq != _freq) { if (_freq == 0) { ledcDetach(pin); pinMode(pin, OUTPUT); digitalWrite(pin, LED_OFF); bPWMMode = false; } else { ledcAttachChannel(pin, _freq, PWM_RESOLUTION, channel); bPWMMode = true; } freq = _freq; } } MY_IRAM_ATTR void CLED0::setDuty() { uint16_t _duty; if (bAC) _duty = LED0_DUTY_AC; else if (bLoad) _duty = LED0_DUTY_LOAD; else _duty = duty; ledcWrite(PIN_LED_WIFI, PWM_FULL * (100 - _duty) / 100); // Light Blink } MY_IRAM_ATTR void CLED0::setDuty(uint16_t _duty) { if (duty != _duty) { if (bPWMMode) ledcWrite(PIN_LED_WIFI, PWM_FULL * (100 - _duty) / 100); // Light Blink else digitalWrite(pin, _duty ? LED_ON : LED_OFF); duty = _duty; } };