C
Qt Quick Ultralite multitask Example
// Copyright (C) 2025 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial #include <bsp/esp-bsp.h> #include <driver/ledc.h> namespace BoardUtils { void initLED() { gpio_num_t gpio_r = (gpio_num_t) BSP_PMOD1_IO3; gpio_num_t gpio_g = (gpio_num_t) BSP_PMOD1_IO4; gpio_num_t gpio_b = (gpio_num_t) BSP_PMOD1_IO8; ledc_timer_config_t ledc_timer = {.speed_mode = LEDC_LOW_SPEED_MODE, .duty_resolution = LEDC_TIMER_8_BIT, .timer_num = LEDC_TIMER_0, .freq_hz = 8192, .clk_cfg = LEDC_AUTO_CLK}; ESP_ERROR_CHECK(ledc_timer_config(&ledc_timer)); ledc_channel_config_t ledc_channel_red = {.gpio_num = gpio_r, .speed_mode = LEDC_LOW_SPEED_MODE, .channel = LEDC_CHANNEL_0, .intr_type = LEDC_INTR_DISABLE, .timer_sel = LEDC_TIMER_0, .duty = 0, .hpoint = 0}; ESP_ERROR_CHECK(ledc_channel_config(&ledc_channel_red)); ledc_channel_config_t ledc_channel_green = {.gpio_num = gpio_g, .speed_mode = LEDC_LOW_SPEED_MODE, .channel = LEDC_CHANNEL_3, .intr_type = LEDC_INTR_DISABLE, .timer_sel = LEDC_TIMER_0, .duty = 0, .hpoint = 0}; ESP_ERROR_CHECK(ledc_channel_config(&ledc_channel_green)); ledc_channel_config_t ledc_channel_blue = {.gpio_num = gpio_b, .speed_mode = LEDC_LOW_SPEED_MODE, .channel = LEDC_CHANNEL_2, .intr_type = LEDC_INTR_DISABLE, .timer_sel = LEDC_TIMER_0, .duty = 0, .hpoint = 0}; ESP_ERROR_CHECK(ledc_channel_config(&ledc_channel_blue)); } static bool ledOn = false; void toggleLED() { uint8_t r = ledOn ? 0 : 180; uint8_t g = ledOn ? 0 : 180; uint8_t b = ledOn ? 0 : 180; ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, r); ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_3, g); ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_2, b); ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0); ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_3); ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_2); ledOn = !ledOn; } } // namespace BoardUtils