From dcfe43860be2daf118e81a59029a34f018926ae5 Mon Sep 17 00:00:00 2001 From: James McKenzie Date: Mon, 15 Dec 2014 12:10:09 +0000 Subject: fish --- lib_ws2812.h | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 lib_ws2812.h (limited to 'lib_ws2812.h') 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_ */ -- cgit v1.2.3