
La librería ESP_Color contiene funciones para la conversión y operación de colores en un procesador como el ESP8266 y ESP32, siendo la sucesora de Arduino-ColorConverter.
La clase Color incluye formatos para color RGB888, RGB666, RGB565, RGB332, HSV, HSL, escala de grises GREY256, GREY16, GREY4 y blanco y negro BW.
Además de permitir realizar conversiones, ESP_Color incorpora operaciones como adición y blending, así como gestión del canal de transparencia.
Otras utilidades son creación desde temperatura de calor, creación de gradientes, corección gamma y gestión de paletas de colores.
Anuncio:
Es decir, básicamente cualquier funcion que alguna vez puedas necesitar en gestión colores. Un ejemplo de uso de la librería es el siguiente.
ESP_Color::Color color(1.0f, 0.5f, 0.2f); Serial.printf("R:%5.2f\tG:%5.2f\tB:%5.2f\tA:%5.2f\n", color.R, color.G, color.B, color.A); Serial.printf("R:%d\tG:%d\tB:%d\tA:%d\n", color.R_Byte(), color.G_Byte(), color.B_Byte(), color.A_Byte()); Serial.println(); auto hsl = color.ToHsl(); Serial.printf("H:%5.2f\tS:%5.2f\tL:%5.2f\tA:%5.2f\n", hsl.H, hsl.S, hsl.L, hsl.A); auto hsv = color.ToHsv(); Serial.printf("H:%5.2f\tS:%5.2f\tL:%5.2f\tA:%5.2f\n", hsv.H, hsv.S, hsv.V, hsv.A); Serial.println(); Serial.printf("RGB8888\t:%x\n", color.ToRgba8888()); Serial.printf("RGB888 \t:%x\n", color.ToRgb888()); Serial.printf("RGB666 \t:%x\n", color.ToRgb666()); Serial.printf("RGB565 \t:%x\n", color.ToRgb565()); Serial.println(); Serial.printf("GREY256\t:%d\n", color.ToGray256()); Serial.printf("GREY16 \t:%d\n", color.ToGray16()); Serial.printf("GREY4 \t:%d\n", color.ToGray4()); Serial.printf("BW \t:%d\n", color.ToBW());
Paletas de colores
La librería ESP_Color también incorpora el concepto de paleta, un array de colores que permiten generar interface de usuarios o efectos como fuego de forma eficiente.
Se incorpora un gran número de paletas predefinidas de 64 colores de longitud.
ESP_Color::Palette<uint16_t> palette(ESP_Color::Palettes64::MAGMA_64, 64); for(size_t h = 0; h < screen.height(); h++) { auto index = (int)(64 * (float)h / screen.height()); screen.drawFastHLine(0, h, screen.width(), palette[index]); }
No obstante también es posible generar tu propia paleta con un número cualquier de elementos, mediante el método ‘generate’.
ESP_Color::Palette<uint16_t> palette(128); const ESP_Color::Color color1((uint16_t)TFT_YELLOW); const ESP_Color::Color color2((uint16_t)TFT_CYAN); const ESP_Color::Color color3((uint16_t)TFT_RED); palette.Generate([color1, color2, color3](float f) -> uint16_t { return ESP_Color::Color::FromGradient(color1, color2, color3, f).ToRgb565(); } );
Descarga el código
Todo el código está disponible para su descarga en Github en este enlace https://github.com/luisllamasbinaburo/ESP-Color
tutoriales de Arduino
Anuncio: