Skip to content
Michael Miller edited this page Sep 22, 2020 · 20 revisions

NOTE: The ESP32 and the ESP32S2 both have some pins dedicated for input only. The following NeoMethods are restricted to use only output pins.
For the ESP32 all pins below 34 are output pins. You will still need to check your board to make sure any of these pins are available.
For the ESP32S2 all pins other than 46 are output pins. Again, please check your specific board for available pins.
The bitbang method has further restrictions in that it will only support pins below 32.

NeoEsp32I2s1800KbpsMethod

NeoEsp32I2s1800KbpsMethod supports any available pin below 34.
This method uses i2s hardware support to send data to the NeoPixels. Thus this method uses very little CPU for actually sending the data to NeoPixels but it requires an extra buffer for the I2s DMA to read from. Thus there is a trade off of CPU use versus memory use. The extra buffer needed is four times the size of the primary pixel buffer.

NOTE: The eps32 supports two i2s hardware buses. The first one is left open for other uses. If for some reason you need to use the first one, then use NeoEsp32I2s0800KbpsMethod instead.

NeoEsp32I2s1400KbpsMethod

Same as NeoEsp32I2s1800KbpsMethod but running at the older and slower data rate.

NeoEsp32I2s1Ws2813Method

Same as NeoEsp32I2s1800KbpsMethod but has the longer delay required by these LEDs.

NeoEsp32Rmt# Methods

The NeoEsp32Rmt0800KbpsMethod is an example, the number following the Rmt is 0-7 providing 8 channels of the RMT hardware. All the variants for different leds (Ws2812x, Ws12813, etc) are supported.

NeoEsp32Rmt# Methods supports any available pin below 34.
These methods uses RMT hardware support to send data to the NeoPixels. Thus this method uses very little CPU for actually sending the data to NeoPixels but it requires an extra buffer for hardware to read from. This extra buffer is the same size as the primary buffer. Due to the use of a ISR to translate and fill the RMT hardware output buffer, there are many interrupts fired to keep that small output buffer filled. Some have found this to be an issue when other features of their sketch also trigger a high volume of interrupts.

NeoEsp32BitBang800KbpsMethod

NeoEsp32BitBang800KbpsMethod supports any available pin below 32. Even though 33 and 34 are also output pins, they are not supported.

This method uses only the CPU to send data to the NeoPixels. But due to core interrupts it is not stable when used with more than a few pixels.

It is not recommended to use this method except for comparing results with the other methods. For very short runs of pixels it maybe possible to use this method without ill effects. If it fails, the pixels may not be correctly set. Use this instead of Neo800KbpsMethod to force your sketch to use the Bit Banging to send data.

NeoEsp32BitBang400KbpsMethod

Same as NeoEsp32BitBang800KbpsMethod but running at the older and slower data rate.

NeoEsp32BitBangWs2813Method

Same as NeoEsp32BitBang800KbpsMethod but has the longer delay required these chips.

Clone this wiki locally