Skip to content
Michael Miller edited this page Oct 11, 2021 · 99 revisions

Please consider donating to the cause.
Donate

For quick questions and support:

A Note On Wiki Accuracy

This library has a ton of features; while a great amount of effort has been spent on creating and maintaining this Wiki; it maybe become out of date in parts. If you find something incorrect, update it or make a note in this section at least.

Items to be addressed:

  • The new NeoPixelBus_Channel is not documented yet
  • The new SPI dynamic speed features are not documented yet

Overview

This is an Arduino Library that supports sending out data to update a series of color "smart LEDs" commonly known as NeoPixels and/or DotStars.

Please see the FAQ for common questions and answers.

Please read the Adafruit NeoPixel Best Practices guide before connecting your NeoPixels, it will save you a lot of time and effort.

The Quick Start Guide will lead you through getting it connected and working for the first time with some tips to help diagnose possible issues.

The API Reference will just give you details of objects and methods available to you.

Latest Features

(October 10th, 2021)

  • UCS8903 (RGB) & UCS8904 (RGBW) LEDs support

(June 13th, 2021)

  • ESP32C3 supported
  • ESP8266 Arduino Board support v3 release supported (work around in place for IRAM attribute GCC bug)
  • TM1914

(March 21st, 2021)

  • ESP32 I2S method is functional again
  • SPI methods now support the ability to dynamically set the speed
  • TM1829
  • TX1812
  • NeoSegment improvements for using WS2811 chips to drive 7 Segment LEDs directly

(January 31st, 2021)

  • Dynamic Bus Channels for hardware that supports it (arrays of NeoPixelBus)
  • LPD6803 support
  • APA106 timing tuning
  • Rgb16Color (565 16 bit color) and Rgb48Color (48 bit color) objects
  • General bug fixes

(March 28th, 2020)

  • P9813 support

(March 27th, 2020)

  • SK9822 support

(January 10th, 2020)

  • WS2801 specific feature and method

(December 9th, 2019)

  • Nano 33 BLE hardware async support

(October 17th, 2019)

  • Inverted signal support, makes it easy for a cheap and simple level shifter
  • Ws2811 specific method
  • Esp32 RMT Ch6 now the default on Esp32 platform (due to bug in i2s in core)

(September 25th, 2019)

  • LPD8806 support
  • NeoPixelSegmentBus - series of seven segment displays driven by WS2811s

(September 1st, 2019)

  • APA 106 support

(June 9th, 2019)

  • Esp32 now supported with RMT hardware.

Supported Platforms

  • AVR 8 bit Arduino
  • Esp8266, Esp32, Nano 33 BLE in hardware
  • Most Arm based Arduinos.

Supported Pixels

  • RGB and RGBW (in various color order)
  • All one and two wire RGB pixels that use the same transport as any of the below.

NeoPixels, one data wire

  • WS2811, WS2812, WS2812b, WS2813
  • APA 106
  • SK6812
  • LC8812
  • TM1814

DotStars, two wire, one data and one clock

  • APA102
  • SK9822
  • LPD6803
  • LPD8806
  • WS2801
  • P9813

Using this Library as part of a closed application with its current license is tricky. But it can be accomplished.

Why use this library over another? The section linked here are the top level unique features/issues to the most common libraries to help you choose.

Here are a few of the projects that use this library. They can often be a great source so you don't have to reinvent the wheel. They maybe just the inspiration you need to make your project.

This library was written to be small. The template based coding pattern allows the compiler to produce smaller code while still supporting all the options. This is important when you are working on smaller Arduinos like a Gemma.

There are several examples that will help you get started. They range from simple to complex and are always a good reference.

This object will be used to set colors on the pixels. When constructed a "feature" and a "method" object must be supplied to define which pixels you are using and how they are updated.

There are several color objects that can be used to define and blend colors. While all can be directly used to set the pixel color, the RgbwColor can only be used with a NeoPixelBus that has been declared with NeoRgbwFeature.

This manages the timing and lifetime for animations. It supplements the NeoPixelBus object to make it easy to create smooth asynchronous animations. It also include NeoEase class that provides easing functions for animation curves.

The human eye perceives light levels differently than what the NeoPixels show. NeoPixels brightness levels are very linear so this object will convert them to a nonlinear spectrum so that what you see is what you expected.

Some of the oldest forms of NeoPixels are the ring panels, coming in 12, 24, and larger. When these are used together to form concentric rings they can provide some interesting visual displays. The NeoRingTopology object provides an easy polar coordinate (ring, pixel) access to the concentric rings of pixels.

Some of the newest forms of NeoPixels are the matrix panels, coming in 8x8, 16x8, and larger. The NeoTopology, NeoTiles, and NeoMosaic object with the help of the layout objects provide an easy (x,y) access to the pixels.

There is a series of objects that help manage images and render them onto the strip. This makes it easy to work in paint programs and have that translate into your NeoPixel projects.

A series of tutorials and discussions on advanced topics. These include details on custom topography templates and animation techniques.

Clone this wiki locally