Dynamic parallel I2S output

- update NeoPixelBus to v2.8.0
- use single/mono I2S + 4x RMT for 5 outputs or less
- use parallel x8 I2S + 8x RMT for >5 outputs (limit of 300 LEDs per output)
This commit is contained in:
Blaz Kristan
2024-06-12 18:00:00 +02:00
parent 25ade86994
commit f4475b9d2a
10 changed files with 337 additions and 638 deletions

View File

@@ -21,10 +21,6 @@ uint16_t approximateKelvinFromRGB(uint32_t rgb);
#define IC_INDEX_WS2812_2CH_3X(i) ((i)*2/3)
#define WS2812_2CH_3X_SPANS_2_ICS(i) ((i)&0x01) // every other LED zone is on two different ICs
// flag for using double buffering in BusDigital
extern bool useGlobalLedBuffer;
//temporary struct for passing bus configuration to bus
struct BusConfig {
uint8_t type;
@@ -363,6 +359,7 @@ class BusManager {
static uint16_t ablMilliampsMax(void) { return _milliAmpsMax; }
static int add(BusConfig &bc);
static void useParallelOutput(void); // workaround for inaccessible PolyBus
//do not call this method from system context (network callback)
static void removeAll();