Configuring
#include "driver/ledc.h"
#define MY_PWM_CHANNEL LEDC_CHANNEL_0
#define MY_PWM_MODE LEDC_LOW_SPEED_MODE
//--------------------------
//----- SETUP LEDC PWM -----
//--------------------------
//Used for:
ledc_timer_config_t LedcTimer = {
.speed_mode = MY_PWM_MODE,
.timer_num = LEDC_TIMER_0,
.duty_resolution = LEDC_TIMER_13_BIT, //Set duty resolution to 13 bits (0-8191)
.freq_hz = 2730, //Frequency in Hz
.clk_cfg = LEDC_AUTO_CLK
};
ESP_ERROR_CHECK(ledc_timer_config(&LedcTimer));
ledc_channel_config_t LedcChannel = {
.speed_mode = MY_PWM_MODE,
.channel = MY_PWM_CHANNEL,
.timer_sel = LEDC_TIMER_0,
.intr_type = LEDC_INTR_DISABLE,
.gpio_num = 8, //<<<<<<<SET GPIO NUMBER<<<<<<<<<<<<<<<<<<<<<<<
.duty = 0, //Startup with 0% duty
.hpoint = 0
};
ESP_ERROR_CHECK(ledc_channel_config(&LedcChannel));
Set duty cycle
//Set PWM Duty
int TargetPwmDutyCycle = 4095; //13bit resolution = 0-8191
if (ledc_get_duty(MY_PWM_MODE, MY_PWM_CHANNEL) != TargetPwmDutyCycle)
{
ESP_ERROR_CHECK(ledc_set_duty(MY_PWM_MODE, MY_PWM_CHANNEL, TargetPwmDutyCycle));
ESP_ERROR_CHECK(ledc_update_duty(MY_PWM_MODE, MY_PWM_CHANNEL)); //Update duty to apply the new value
}
