Added primer on how to choose the right ESP8266 library.

Marc MERLIN
2019-04-23 15:40:59 -07:00
parent 5893db236f
commit 7537501a63

18
Home.md

@@ -36,6 +36,24 @@ Please read the [Adafruit NeoPixel Best Practices](https://learn.adafruit.com/ad
* All one and two wire RGB pixels that use the same transport as any of the above.
## Why this library?
There are multiple competing libraries, FastLED being the biggest.
On ESP822, your choices are:
* NeoPixelBus
* Smaller than FastLED, more features and pixel support than esp8266_ws2812_i2s
* Uses the DMA via the UART, avoiding interrupts (NMIs). FastLED uses interrupts which can be problematic if you use other code that relies on interrupts, or wifi (although FastLED allows other fast interrupts to fire in between pixel updates)
* Supports RGBW pixels (not supported by the other 2 libraries)
* https://github.com/JoDaNl/esp8266_ws2812_i2s/
* Uses I2S interface to drive Neopixels via DMA and without relying on the UART
* Very basic/limited API, code is mostly a proof of concept
* FastLED
* Very rich API, although at a cost of bigger library size
* Identical API available across most arduino compatible CPUs
* Interrupt driven on ESP8266, so it's sensitive to timing (not an issue on ESP32 which uses RMT)
On ESP32, if you are ok with the bigger code size and different API, FastLED with RMT is likely a better bet as it supports 8 parallel channels for better refresh rate on bigger strings (useful past 256 pixels).
If you have 4096 pixels or more, you can use the 16 way output driver from Yves as described on this [on this page](http://marc.merlins.org/perso/arduino/post_2018-07-30_Building-a-64x64-Neopixel-Neomatrix-_4096-pixels_-running-NeoMatrix-FastLED-IR.html#esp32driver)
## [Projects based on this library](https://github.com/Makuna/NeoPixelBus/wiki/Project-References)
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.