HCesp/LED0.cpp

53 lines
1.2 KiB
C++

#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;
}
};