#include "rgb_led.h" #include "esp_log.h" #include "led_strip.h" namespace kvida::drivers { namespace { constexpr const char *TAG = "rgb_led"; constexpr int kGpio = 8; // WS2812 on ESP32-C6-DevKitC-1 led_strip_handle_t g_strip = nullptr; } // namespace void rgb_led_init() { if (g_strip) { return; } led_strip_config_t strip_config = {}; strip_config.strip_gpio_num = kGpio; strip_config.max_leds = 1; strip_config.led_model = LED_MODEL_WS2812; strip_config.color_component_format = LED_STRIP_COLOR_COMPONENT_FMT_GRB; led_strip_rmt_config_t rmt_config = {}; rmt_config.resolution_hz = 10 * 1000 * 1000; esp_err_t err = led_strip_new_rmt_device(&strip_config, &rmt_config, &g_strip); if (err != ESP_OK) { ESP_LOGE(TAG, "led_strip_new_rmt_device failed: %s", esp_err_to_name(err)); return; } led_strip_clear(g_strip); } void rgb_led_set_color(uint8_t red, uint8_t green, uint8_t blue) { if (!g_strip) { ESP_LOGE(TAG, "rgb_led_set_color() called before rgb_led_init()"); return; } led_strip_set_pixel(g_strip, 0, red, green, blue); led_strip_refresh(g_strip); } } // namespace kvida::drivers