Simple neopixel (WS2812) library, tuned for stm32 (L432) at 80 MHz Should be compatible with any stm32, different clock speed may require timing adjustments in neopixel.c

Dependents:   Nucleo_neopixel_ovgu Nucleo_neopixel_ovgu1 Nucleo_neopixel_ovgu3

Fork of NeoPixel by Ondřej Hruška

Revision:
0:a81364d9a67b
diff -r 000000000000 -r a81364d9a67b colorspace.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/colorspace.h	Tue Mar 21 21:17:08 2017 +0000
@@ -0,0 +1,64 @@
+#ifndef HSL_H
+#define HSL_H
+
+//
+// Utilities for working with colors in different color spaces
+//
+
+#include "mbed.h"
+
+// all values 0 to 1
+
+// adapted from: https://github.com/ratkins/RGBConverter
+
+struct FloatRGB {
+    float r;
+    float g;
+    float b;
+};
+
+
+struct FloatHSL {
+    float h;
+    float s;
+    float l;
+};
+
+
+struct FloatHSV {
+    float h;
+    float s;
+    float v;
+};
+
+
+// --- Converting to RGB hex ---
+
+/** Convert HSL to RGB hex */
+uint32_t hsl2hex(const FloatHSL *hsl);
+
+/** Convert HSV to RGB hex */
+uint32_t hsv2hex(const FloatHSV *hsv);
+
+/** Convert RGB to RGB hex */
+uint32_t rgb2hex(FloatRGB *rgb);
+
+
+// --- Itner-space conversion functions ---
+
+/** Convert HSL to RGB */
+void hsl2rgb(const FloatHSL *hsl, FloatRGB *rgb);
+
+/** Convert RGB to HSL */
+void rgb2hsl(const FloatRGB *rgb, FloatHSL *hsl);
+
+/** Convert from HSV to HSL */
+void hsv2hsl(const FloatHSV *hsv, FloatHSL *hsl);
+
+/** Convert from HSL to HSV */
+void hsl2hsv(const FloatHSL *hsl, FloatHSV *hsv);
+
+/** Convert HSV to RGB ("handy" algo) */
+void hsv2rgb(const FloatHSV *hsv, FloatRGB *rgb);
+
+#endif /* HSL_H */
\ No newline at end of file