diff --git a/FAQ-#7.md b/FAQ-#7.md new file mode 100644 index 0000000..a71e966 --- /dev/null +++ b/FAQ-#7.md @@ -0,0 +1,21 @@ +### How many pixels does this library support? +The primary limiting factor to the number of pixels you can drive with this library is the memory you have on your Arduino. This library requires a working buffer that contains state for every pixel on the bus. +The next limiting factor is how fast you want to update them, as more pixels takes longer to update. This topic is covered in [FAQ: How fast can I update my NeoPixels](https://github.com/Makuna/NeoPixelBus/wiki/FAQ-%235) + +The amount of memory required does vary on several factors. + +The first factor is what type of pixel do you have? If your pixels are three element pixels, RGB; then they require 3 bytes of data per pixel. If your pixels are four element pixels, RGBW; then they require 4 bytes of data per pixel. +``` +RGB buffer size in bytes = number of pixels * 3 +RGBW buffer size in bytes = number of pixels * 4 +``` + +The second factor is what "method" is used to send the data. For most AVR platforms the method used is similar and requires only a few extra bytes beyond what was listed above to manage the buffer. But there is once current exception today. + +The NeoEsp8266Dma800KbpsMethod, the default method for Esp8266, is that exception. You can find more information on this method on the [NeoPixelBus object page](https://github.com/Makuna/NeoPixelBus/wiki/NeoPixelBus-object). This "method" not only requires the above buffer, but it also requires a DMA buffer for the hardware to use. This DMA buffer requires four bytes per byte used from the primary buffer. +``` +DMA RGB buffer size in bytes = number of pixels * 3 * 4 +DMA RGBW buffer size in bytes = number of pixels * 4 * 4 +``` +For esp8266, this equates to approximately 3000 pixels for RGB, and 2250 pixels for RGBW; as long as you don't have anything else that requires much more memory. +