53 lines
1.2 KiB
C++
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);
|
|
};
|
|
|
|
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;
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
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;
|
|
}
|
|
};
|