diff --git a/wled00/bus_wrapper.h b/wled00/bus_wrapper.h index 43623939..bda4de33 100644 --- a/wled00/bus_wrapper.h +++ b/wled00/bus_wrapper.h @@ -69,6 +69,10 @@ #define I_HS_P98_3 35 #define I_SS_P98_3 36 +//LPD6803 +#define I_HS_LPO_3 37 +#define I_SS_LPO_3 38 + /*** ESP8266 Neopixel methods ***/ #ifdef ESP8266 @@ -140,6 +144,10 @@ #define B_HS_LPD_3 NeoPixelBrightnessBus #define B_SS_LPD_3 NeoPixelBrightnessBus +//LPD6803 +#define B_HS_LPO_3 NeoPixelBrightnessBus +#define B_SS_LPO_3 NeoPixelBrightnessBus + //WS2801 //#define B_HS_WS1_3 NeoPixelBrightnessBus //#define B_HS_WS1_3 NeoPixelBrightnessBus @@ -184,6 +192,7 @@ class PolyBus { case I_8266_BB_TM1_4: beginTM1814(busPtr); break; case I_HS_DOT_3: (static_cast(busPtr))->Begin(); break; case I_HS_LPD_3: (static_cast(busPtr))->Begin(); break; + case I_HS_LPO_3: (static_cast(busPtr))->Begin(); break; case I_HS_WS1_3: (static_cast(busPtr))->Begin(); break; case I_HS_P98_3: (static_cast(busPtr))->Begin(); break; #endif @@ -219,11 +228,13 @@ class PolyBus { // ESP32 can (and should, to avoid inadvertantly driving the chip select signal) specify the pins used for SPI, but only in begin() case I_HS_DOT_3: (static_cast(busPtr))->Begin(pins[1], -1, pins[0], -1); break; case I_HS_LPD_3: (static_cast(busPtr))->Begin(pins[1], -1, pins[0], -1); break; + case I_HS_LPO_3: (static_cast(busPtr))->Begin(pins[1], -1, pins[0], -1); break; case I_HS_WS1_3: (static_cast(busPtr))->Begin(pins[1], -1, pins[0], -1); break; case I_HS_P98_3: (static_cast(busPtr))->Begin(pins[1], -1, pins[0], -1); break; #endif case I_SS_DOT_3: (static_cast(busPtr))->Begin(); break; case I_SS_LPD_3: (static_cast(busPtr))->Begin(); break; + case I_SS_LPO_3: (static_cast(busPtr))->Begin(); break; case I_SS_WS1_3: (static_cast(busPtr))->Begin(); break; case I_SS_P98_3: (static_cast(busPtr))->Begin(); break; } @@ -285,6 +296,8 @@ class PolyBus { case I_SS_DOT_3: busPtr = new B_SS_DOT_3(len, pins[1], pins[0]); break; case I_HS_LPD_3: busPtr = new B_HS_LPD_3(len, pins[1], pins[0]); break; case I_SS_LPD_3: busPtr = new B_SS_LPD_3(len, pins[1], pins[0]); break; + case I_HS_LPO_3: busPtr = new B_HS_LPO_3(len, pins[1], pins[0]); break; + case I_SS_LPO_3: busPtr = new B_SS_LPO_3(len, pins[1], pins[0]); break; case I_HS_WS1_3: busPtr = new B_HS_WS1_3(len, pins[1], pins[0]); break; case I_SS_WS1_3: busPtr = new B_SS_WS1_3(len, pins[1], pins[0]); break; case I_HS_P98_3: busPtr = new B_HS_P98_3(len, pins[1], pins[0]); break; @@ -348,6 +361,8 @@ class PolyBus { case I_SS_DOT_3: (static_cast(busPtr))->Show(); break; case I_HS_LPD_3: (static_cast(busPtr))->Show(); break; case I_SS_LPD_3: (static_cast(busPtr))->Show(); break; + case I_HS_LPO_3: (static_cast(busPtr))->Show(); break; + case I_SS_LPO_3: (static_cast(busPtr))->Show(); break; case I_HS_WS1_3: (static_cast(busPtr))->Show(); break; case I_SS_WS1_3: (static_cast(busPtr))->Show(); break; case I_HS_P98_3: (static_cast(busPtr))->Show(); break; @@ -409,6 +424,8 @@ class PolyBus { case I_SS_DOT_3: return (static_cast(busPtr))->CanShow(); break; case I_HS_LPD_3: return (static_cast(busPtr))->CanShow(); break; case I_SS_LPD_3: return (static_cast(busPtr))->CanShow(); break; + case I_HS_LPO_3: return (static_cast(busPtr))->CanShow(); break; + case I_SS_LPO_3: return (static_cast(busPtr))->CanShow(); break; case I_HS_WS1_3: return (static_cast(busPtr))->CanShow(); break; case I_SS_WS1_3: return (static_cast(busPtr))->CanShow(); break; case I_HS_P98_3: return (static_cast(busPtr))->CanShow(); break; @@ -494,6 +511,8 @@ class PolyBus { case I_SS_DOT_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col.R,col.G,col.B)); break; case I_HS_LPD_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col.R,col.G,col.B)); break; case I_SS_LPD_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col.R,col.G,col.B)); break; + case I_HS_LPO_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col.R,col.G,col.B)); break; + case I_SS_LPO_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col.R,col.G,col.B)); break; case I_HS_WS1_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col.R,col.G,col.B)); break; case I_SS_WS1_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col.R,col.G,col.B)); break; case I_HS_P98_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col.R,col.G,col.B)); break; @@ -555,6 +574,8 @@ class PolyBus { case I_SS_DOT_3: (static_cast(busPtr))->SetBrightness(b); break; case I_HS_LPD_3: (static_cast(busPtr))->SetBrightness(b); break; case I_SS_LPD_3: (static_cast(busPtr))->SetBrightness(b); break; + case I_HS_LPO_3: (static_cast(busPtr))->SetBrightness(b); break; + case I_SS_LPO_3: (static_cast(busPtr))->SetBrightness(b); break; case I_HS_WS1_3: (static_cast(busPtr))->SetBrightness(b); break; case I_SS_WS1_3: (static_cast(busPtr))->SetBrightness(b); break; case I_HS_P98_3: (static_cast(busPtr))->SetBrightness(b); break; @@ -617,6 +638,8 @@ class PolyBus { case I_SS_DOT_3: col = (static_cast(busPtr))->GetPixelColor(pix); break; case I_HS_LPD_3: col = (static_cast(busPtr))->GetPixelColor(pix); break; case I_SS_LPD_3: col = (static_cast(busPtr))->GetPixelColor(pix); break; + case I_HS_LPO_3: col = (static_cast(busPtr))->GetPixelColor(pix); break; + case I_SS_LPO_3: col = (static_cast(busPtr))->GetPixelColor(pix); break; case I_HS_WS1_3: col = (static_cast(busPtr))->GetPixelColor(pix); break; case I_SS_WS1_3: col = (static_cast(busPtr))->GetPixelColor(pix); break; case I_HS_P98_3: col = (static_cast(busPtr))->GetPixelColor(pix); break; @@ -696,6 +719,8 @@ class PolyBus { case I_SS_DOT_3: delete (static_cast(busPtr)); break; case I_HS_LPD_3: delete (static_cast(busPtr)); break; case I_SS_LPD_3: delete (static_cast(busPtr)); break; + case I_HS_LPO_3: delete (static_cast(busPtr)); break; + case I_SS_LPO_3: delete (static_cast(busPtr)); break; case I_HS_WS1_3: delete (static_cast(busPtr)); break; case I_SS_WS1_3: delete (static_cast(busPtr)); break; case I_HS_P98_3: delete (static_cast(busPtr)); break; @@ -717,6 +742,7 @@ class PolyBus { switch (busType) { case TYPE_APA102: t = I_SS_DOT_3; break; case TYPE_LPD8806: t = I_SS_LPD_3; break; + case TYPE_LPD6803: t = I_SS_LPO_3; break; case TYPE_WS2801: t = I_SS_WS1_3; break; case TYPE_P9813: t = I_SS_P98_3; break; default: t=I_NONE; diff --git a/wled00/const.h b/wled00/const.h index bf119a58..88192039 100644 --- a/wled00/const.h +++ b/wled00/const.h @@ -165,6 +165,7 @@ #define TYPE_APA102 51 #define TYPE_LPD8806 52 #define TYPE_P9813 53 +#define TYPE_LPD6803 54 //Network types (master broadcast) (80-95) #define TYPE_NET_DDP_RGB 80 //network DDP RGB bus (master broadcast bus) #define TYPE_NET_E131_RGB 81 //network E131 RGB bus (master broadcast bus) diff --git a/wled00/data/settings_leds.htm b/wled00/data/settings_leds.htm index a73f3ad9..01f82403 100644 --- a/wled00/data/settings_leds.htm +++ b/wled00/data/settings_leds.htm @@ -297,6 +297,7 @@ ${i+1}: + diff --git a/wled00/html_settings.h b/wled00/html_settings.h index 61ccf39c..c519b60d 100644 --- a/wled00/html_settings.h +++ b/wled00/html_settings.h @@ -76,7 +76,7 @@ const char PAGE_settings_leds[] PROGMEM = R"=====(LED Settings