* Fix bug on first write
Pin is 'HIGH' at reset, so we need to pull it down and generate a
reset.
* Move init code to flash section, not needed to be in iram.
* Remove pin choice in API
* Remove lock in ws2812_buffer_write
* Remove naked malloc
* Drop ws2812_writergb
* Drop support of ws2812.buffers to ws2812_writegrb should use ws2812.buffers:write
* Add support for <>3 colors per leds strips (RGBW)
* Remove ICACHE_FLASH_ATTR
* Add static const on _uartData to avoid initialization penalty
To create a size led long buffer:
buffer = ws2812.newBuffer(size);
To fill the buffer:
buffer:fill(g, r, b)
To get a particular led color:
g, r, b = buffer:get(index)
To set a particular led color:
buffer:set(index, g, r, b);
To send the buffer:
buffer:write(pin);
Module creation & registration now made a lot simpler. In essence,
each module file is now self-contained and only needs a
NODEMCU_MODULE(MYNAME, "myname", myname_map, luaopen_myname);
line to both be automatically recognised by the Lua initialization
as well as honor the LUA_USE_MODULES_MYNAME #define.
As per #810 & #796, only LUA_OPTIMIZE_MEMORY=2 & MIN_OPT_LEVEL=2 are
supported when building. This commit effects that limitation.
With this change modules/auxmods.h no longer needs to be updated for
every new module, nor do module writers need to cater for a hypothetical
LUA_OPTIMIZE_MEMORY < 2 scenario.
- Fixes the "first led problem" (#534#487).
- Adds support for 160MHz mode.
- Optimized timings. Time to write pixels is reduced by about 25%
This is useful when having a large amount of chained LEDs (>500).
Add the original ws2812.write() function which does not scramble the
buffer while preserving the 'new' ws2812.writergb.
With this everybody should be happy again