| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- /* LEDC (LED Controller) basic example
- This example code is in the Public Domain (or CC0 licensed, at your option.)
- Unless required by applicable law or agreed to in writing, this
- software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
- CONDITIONS OF ANY KIND, either express or implied.
- */
- #include <stdio.h>
- #include "driver/ledc.h"
- #include "esp_err.h"
- #define LEDC_TIMER LEDC_TIMER_0
- #define LEDC_MODE LEDC_LOW_SPEED_MODE
- #define LEDC_OUTPUT_IO (5) // Define the output GPIO
- #define LEDC_CHANNEL LEDC_CHANNEL_0
- #define LEDC_DUTY_RES LEDC_TIMER_13_BIT // Set duty resolution to 13 bits
- #define LEDC_DUTY (4095) // Set duty to 50%. ((2 ** 13) - 1) * 50% = 4095
- #define LEDC_FREQUENCY (5000) // Frequency in Hertz. Set frequency at 5 kHz
- static void example_ledc_init(void)
- {
- // Prepare and then apply the LEDC PWM timer configuration
- ledc_timer_config_t ledc_timer = {
- .speed_mode = LEDC_MODE,
- .timer_num = LEDC_TIMER,
- .duty_resolution = LEDC_DUTY_RES,
- .freq_hz = LEDC_FREQUENCY, // Set output frequency at 5 kHz
- .clk_cfg = LEDC_AUTO_CLK
- };
- ESP_ERROR_CHECK(ledc_timer_config(&ledc_timer));
- // Prepare and then apply the LEDC PWM channel configuration
- ledc_channel_config_t ledc_channel = {
- .speed_mode = LEDC_MODE,
- .channel = LEDC_CHANNEL,
- .timer_sel = LEDC_TIMER,
- .intr_type = LEDC_INTR_DISABLE,
- .gpio_num = LEDC_OUTPUT_IO,
- .duty = 0, // Set duty to 0%
- .hpoint = 0
- };
- ESP_ERROR_CHECK(ledc_channel_config(&ledc_channel));
- }
- void app_main(void)
- {
- // Set the LEDC peripheral configuration
- example_ledc_init();
- // Set duty to 50%
- ESP_ERROR_CHECK(ledc_set_duty(LEDC_MODE, LEDC_CHANNEL, LEDC_DUTY));
- // Update duty to apply the new value
- ESP_ERROR_CHECK(ledc_update_duty(LEDC_MODE, LEDC_CHANNEL));
- }
|