# Example for color-converter Component ## What it Does This example demonstrates how to convert HomeKit-compatible color values into RGBW values using the ESP-IDF framework. It supports both HSB (Hue, Saturation, Brightness) and color temperature (in mireds), producing 8-bit RGBW outputs suitable for NeoPixels or PWM-controlled LED drivers. This component does **not** drive LED's directly, but provides the conversion logic needed for your driver implementation. ## Configuration There is no `menuconfig` configuration required. The component simply exposes two functions: - `hsb2rgbw(hue, saturation, brightness, rgbw_out)` - `mired2rgbw(mired, brightness, rgbw_out)` ## Default Behavior | Setting | Description | Example | |--------------------|----------------------------------------------------------|-------------| | Hue | Color hue in degrees (0–360) | 180 (Cyan) | | Saturation | Color saturation from 0.0 to 1.0 | 1.0 | | Brightness | Overall brightness from 0.0 to 1.0 | 1.0 | | Mired | Color temperature (1000000 / Kelvin) | 370 (≈2700K)| ## Example Code Here’s how to use the component to convert color inputs: ```c #include <stdio.h> #include "color_converter.h" void app_main(void) { int rgbw[4]; // Convert HSB to RGBW hsb2rgbw(180.0f, 1.0f, 1.0f, rgbw); // Cyan printf("RGBW from HSB: R=%d, G=%d, B=%d, W=%d\n", rgbw[0], rgbw[1], rgbw[2], rgbw[3]); // Convert Color Temperature to RGBW mired2rgbw(370, 1.0f, rgbw); // ≈2700K (warm white) printf("RGBW from Mired: R=%d, G=%d, B=%d, W=%d\n", rgbw[0], rgbw[1], rgbw[2], rgbw[3]); } ``` ## Building and Running Build the project: ```bash idf.py build ``` Flash it to the ESP32: ```bash idf.py flash ``` Monitor logs: ```bash idf.py monitor ``` ## Example Output ``` RGBW from HSB: R=0, G=255, B=255, W=0 RGBW from Mired: R=0, G=0, B=0, W=255 ``` ## Notes - This component works on all ESP32 variants (ESP32, C3, S2, S3, C6). - It is hardware-agnostic; you must implement your own LED driver logic. - Ideal for NeoPixel, RGBW LED strips, or CW/WW white LED's. - Accurate white mixing using the lowest RGB component as shared white. --- StudioPieters® | Innovation and Learning Labs | https://www.studiopieters.nl
idf.py add-dependency "achimpieters/esp32-color-converter^1.0.1"