Arduino NeoPixel library
ESP8266 CUSTOMERS PLEASE READ: While this branch does work with the esp8266, due to the latest SDK releases it will not function reliably when WiFi is being used. Therefore I suggest you use the UartDriven branch, which includes a solution that will work with WiFi on. Further it contains enhancements that just can't be supported on AVR platform. Including HslColor object and an enhanced animator manager.
Clone this into your Arduino\Library folder
This library is a modification of the Adafruit NeoPixel library. The Api is similiar, but it removes the overal brightness feature and adds animation support.
Create a directory in your Arduino\Library folder named "NeoPixelBus"
Clone (Git) this project into that folder.
It should now show up in the import list.
this is simple example that sets four neopixels to red, green, blue, and then white in order; and then flashes them. If the first pixel is green and the second is red, you need to pass the NEO_RGB flag into the NeoPixelBus constructor.
this is a more complex example, that includes code for three effects, and demonstrates animations.
This represents a color and exposes useful methods to manipulate colors.
instantiates a RgbColor object with the given r, g, b values.
instantiates a RgbColor object with the given brightness. 0 is black, 128 is grey, 255 is white.
returns the general brightness of the pixe, averaging color.
this will darken the color by the given amount
this will lighten the color by the given amount
this will return a color that is a blend between the given colors. The amount to blend is given by the value of progress, 0 will return the left value, 255 will return the right value, 128 will return the value between them.
NOTE: This is not an accurate "visible light" color blend but is fast and in most cases good enough.
This represents a single NeoPixel Bus that is connected by a single pin. Please see Adafruit's documentation for details, but the differences are documented below.
instantiates a NewoPixelBus object, with n number of pixels on the bus, over the p pin, using the defined NeoPixel type. There are some NeoPixels that address the color values differently, so if you set the green color but it displays as red, use the NEO_RGB type flag.
NeoPixelBus strip = NeoPixelBus(4, 8, NEO_RGB | NEO_KHZ800);
It is rare, but some older NeoPixels require a slower communications speed, to include this support you must include the following define before the NeoPixelBus library include and then include the NEO_KHZ400 type flag to enable this slower speed.
#define INCLUDE_NEO_KHZ400_SUPPORT
#include <NeoPixelBus.h>
NeoPixelBus strip = NeoPixelBus(4, 8, NEO_RGB | NEO_KHZ400);
This allows setting a pixel on the bus to a color as defined by a color object. If an animation is actively running on a pixel, it will be stopped.
this allows retrieving the current pixel color
this will setup an animation for a pixel to linear fade between the current color and the given color over the time given. The time is in milliseconds.
this method will initialize the animation state. This should be called only if there are no active animations and new animations are started.
this method will allow the animations to be processed and update the pixel color state.
NOTE: Show must still be called to push the color state to the physical NeoPixels.
this method will return the current animation state. It will return false if there are no active animations.