summaryrefslogtreecommitdiffstats
path: root/lib_ws2812.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib_ws2812.h')
-rw-r--r--lib_ws2812.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/lib_ws2812.h b/lib_ws2812.h
new file mode 100644
index 0000000..2142fa1
--- /dev/null
+++ b/lib_ws2812.h
@@ -0,0 +1,64 @@
+/*
+ * light weight WS2812 lib include
+ *
+ * Version 2.0a3 - Jan 18th 2014
+ * Author: Tim (cpldcpu@gmail.com)
+ *
+ * Please do not change this file! All configuration is handled in "ws2812_config.h"
+ *
+ * License: GNU GPL v2 (see License.txt)
+ +
+ */
+
+#ifndef LIGHT_WS2812_H_
+#define LIGHT_WS2812_H_
+
+/*
+ * Structure of the LED array
+ */
+
+struct RGB
+{
+ uint8_t g;
+ uint8_t r;
+ uint8_t b;
+};
+
+/* User Interface
+ *
+ * Input:
+ * ledarray: An array of GRB data describing the LED colors
+ * number_of_leds: The number of LEDs to write
+ * pinmask (optional): Bitmask describing the output bin. e.g. _BV(PB0)
+ *
+ * The functions will perform the following actions:
+ * - Set the data-out pin as output
+ * - Send out the LED data
+ * - Wait 50µs to reset the LEDs
+ */
+
+void ws2812_setleds (struct RGB *ledarray, uint16_t number_of_leds);
+void ws2812_setleds_pin (struct RGB *ledarray, uint16_t number_of_leds,
+ uint8_t pinmask);
+
+/*
+ * Old interface / Internal functions
+ *
+ * The functions take a byte-array and send to the data output as WS2812 bitstream.
+ * The length is the number of bytes to send - three per LED.
+ */
+
+void ws2812_sendarray (uint8_t * array, uint16_t length);
+void ws2812_sendarray_mask (uint8_t * array, uint16_t length,
+ uint8_t pinmask);
+
+
+/*
+ * Internal defines
+ */
+
+#define CONCAT(a, b) a ## b
+#define CONCAT_EXP(a, b) CONCAT(a, b)
+
+
+#endif /* LIGHT_WS2812_H_ */