WS2812 driver library using I2S interface (for Arduino IDE)
Posted: Mon Oct 26, 2015 2:53 pm
Hi,
For my first ESP8266 project I needed to drive 100 WS2812 led's (strip). I started off withy NodeMCU doing some Lua programming. I gave up on this due to some performance issues of my application.
As such i moved to the Arduino IDE. Here I had quite some issue with stability as driving ws2812 led's by using bit-banging can be tricky....like disabling interrupt too long can cause resets...
Doing some googling i found some work on using the I2S interface driving WS2812 led-strips....great news...this is what i was looking for..as such i took some initial work (https://github.com/cnlohr/esp8266ws2812i2s) and transformed this into my first Arduino library.
I also added some nice features :
Gamma-correction : create a (more) linear intensity curve
Temporal dithering : virtually create more bits (like 10 bits per R/G/B value) to allow a more smoother intensity profiles & partly compensating for the quantisation effects of the gamma-correction
The library can be found on github : https://github.com/JoDaNl/esp8266_ws2812_i2s
I would say it's an early beta...but usable for first experiments.
I will update & enhance the lib the coming weeks.
For my first ESP8266 project I needed to drive 100 WS2812 led's (strip). I started off withy NodeMCU doing some Lua programming. I gave up on this due to some performance issues of my application.
As such i moved to the Arduino IDE. Here I had quite some issue with stability as driving ws2812 led's by using bit-banging can be tricky....like disabling interrupt too long can cause resets...
Doing some googling i found some work on using the I2S interface driving WS2812 led-strips....great news...this is what i was looking for..as such i took some initial work (https://github.com/cnlohr/esp8266ws2812i2s) and transformed this into my first Arduino library.
I also added some nice features :
Gamma-correction : create a (more) linear intensity curve
Temporal dithering : virtually create more bits (like 10 bits per R/G/B value) to allow a more smoother intensity profiles & partly compensating for the quantisation effects of the gamma-correction
The library can be found on github : https://github.com/JoDaNl/esp8266_ws2812_i2s
I would say it's an early beta...but usable for first experiments.
I will update & enhance the lib the coming weeks.