23 void setPin(gpio_num_t pin) { _pin = pin; }
28 gpio_num_t
getPin()
const {
return _pin; }
33 void setFrequency(uint32_t frequency) { this->_frequency = frequency; }
43 void setResolution(uint8_t resolution) { this->_resolution = resolution; }
56 void begin()
override;
65 const char* type()
const override {
return "pwm"; }
67 bool calculateMetrics(Metrics& metrics,
float gridVoltage,
float loadResistance)
const override {
68 return isOnline() && _calculatePhaseControlMetrics(metrics, _dutyCycleFire, gridVoltage, loadResistance);
71#ifdef MYCILA_JSON_SUPPORT
77 void toJson(
const JsonObject& root)
const override {
79 root[
"pwm_pin"] =
static_cast<int>(_pin);
80 root[
"pwm_frequency"] = _frequency;
81 root[
"pwm_resolution"] = _resolution;
86 bool _apply()
override {
88 return ledcWrite(_pin, 0);
90 uint32_t duty = _dutyCycleFire * ((1 << _resolution) - 1);
91 return ledcWrite(_pin, duty);
94 bool _calculateHarmonics(
float* array,
size_t n)
const override {
95 return _calculatePhaseControlHarmonics(_dutyCycleFire, array, n);
99 gpio_num_t _pin = GPIO_NUM_NC;
100 uint32_t _frequency = MYCILA_DIMMER_PWM_FREQUENCY;
101 uint8_t _resolution = MYCILA_DIMMER_PWM_RESOLUTION;