NeoPixelBus
NeoPixelBus copied to clipboard
ESP32-C3 and ESP32-S3 will not compile with NeoEsp32I2s0800KbpsMethod
Describe the bug According to the documentation ESP32-C3 is supported with following note:
NOTE: The ESP32S2 and ESP32C3 only support one i2s hardware bus. Thus you can only use the NeoEsp32I2s0*Method types.
But in Arduino when i set NeoEsp32I2s0800KbpsMethod i get the error "'NeoEsp32I2s0800KbpsMethod' was not declared in this scope"
To Reproduce Steps to reproduce the behavior:
- In Arduino set the board to ESPC32C3 Dev Module
- Install last NeoPixelBus library
Expected behavior Successfully compile the code.
Development environment (please complete the following information):
- OS: Ubuntu 21.10
- Build Environment: Arduino IDE v.1.8.15
- Board target: ESPC32C3 Dev Module
- Library version: v2.6.9
Minimal Sketch that reproduced the problem: #include <NeoPixelBus.h> NeoPixelBus<NeoGrbFeature, NeoEsp32I2s0800KbpsMethod>* strip = NULL; ...... strip = new NeoPixelBus<NeoGrbFeature, NeoEsp32I2s0800KbpsMethod>(newCount, 13); // and recreate with new count strip->Begin(); .....
Additional context Compile error:
ESP32_C3_WS281X:56:28: error: 'NeoEsp32I2s0800KbpsMethod' was not declared in this scope NeoPixelBus<NeoGrbFeature, NeoEsp32I2s0800KbpsMethod>* strip = NULL; ^~~~~~~~~~~~~~~~~~~~~~~~~ /home/marius/Documents/ESP32_C3_WS281X/ESP32_C3_WS281X.ino:56:28: note: suggested alternative: 'NeoEsp32Rmt0800KbpsMethod' NeoPixelBus<NeoGrbFeature, NeoEsp32I2s0800KbpsMethod>* strip = NULL; ^~~~~~~~~~~~~~~~~~~~~~~~~
"NeoEsp32Rmt0800KbpsMethod" is working but i got a flickering and i think this method is not the best.
Thanks.
They changed the i2s interface/API enough on the C3 that it's not easy to support it with the same code. This is noted at the top of the NeoEsp32i2sMethods.h file.
@mariusmotea Jump into the discussions area to continue the conversation about RMT and flickering; specifically mention exactly what LEDs you are using.
Hi,
I'm not able to find in Discussions a topic related to RMT and flickering. I can simply tell that i use a WS2812B strip that i use it with no issues on esp8266 with Neo800KbpsMethod
. Also i want to mention that now i'm using a prototype board designed by me as i want to replace all esp8266 in my home with some small boards with ESP32C3 that have also a mostfet which cut the power to the strip when all leds are soft off. Maybe my board don't work properly?
This is the wrong area to "discuss" the RMT flicker, this is for reporting bugs not seeking help. Ask the questions in the discussions area about RMT and I will answer there. (https://github.com/Makuna/NeoPixelBus/discussions). The original topic (ESP32C3 and I2s methods) is a valid issue that it is not supported.
ESP32S3 also has a significant interface change for i2s and currently is not supported. Unknown if it follows the C3 or creates yet another interface.
Note S3 and C3 are supported by BitBang in the DelayBetweenPixels branch
https://github.com/adafruit/Adafruit_NeoPXL8 Includes DMA support for S3 (C3?) using the LED parallel peripheral.