How to integrate LPD8806 LED Strip (supportet)?

I´m trying to get the LPD8806 strip working.
Im using platformIO to compile. If I do no changes and use no platformio_override.ini it works without errors (using travis_esp8266 in the platformio.ini and my Bord is NodeMcu v3 CP2102).

But if change the settings (I think i have to change) in the platformio_override.ini I get some errors.

Settings I change (remove the " ; "). The rest i leave at it is:

default_envs = esp01_1m

board = esp01_1m


; PIN defines for 2 wire LEDs

Here the complete platformio_override.ini :blush:

Example PlatformIO Project Configuration Override

# ------------------------------------------------------------------------------
# Copy to platformio_override.ini to activate overrides
# ------------------------------------------------------------------------------
# Please visit documentation:

default_envs = esp01_1m

board = esp01_1m
platform = ${common.arduino_core_2_4_2}
board_build.ldscript = ${common.ldscript_1m0m}
build_flags = ${common.build_flags_esp8266} 
; PIN defines - uncomment and change, if needed:
;   -D LEDPIN=2
;   -D BTNPIN=0
;   -D IR_PIN=4
;   -D RLYPIN=12
;   -D RLYMDE=1
; digital LED strip types - uncomment only one ! - this will disable WS281x / SK681x support
;   -D USE_APA102
;   -D USE_WS2801
   -D USE_LPD8806
; PIN defines for 2 wire LEDs
   -D CLKPIN=0
; to drive analog LED strips (aka 5050), uncomment the following
; PWM pins 5,12,13,15 are used with Magic Home LED Controller (default)
; for the H801 controller (PINs 15,13,12,14 (W2 = 04)) uncomment this
;   -D WLED_USE_H801
; for the BW-LT11 controller (PINs 12,4,14,5 ) uncomment this
; and to enable channel 5 for RGBW-CT led strips this

Hi, try this platformio_override.ini, it should be enough to get LPD8806 working!

default_envs = nodemcu_lpd

board = d1_mini
platform = ${common.platform_wled_default}
board_build.ldscript = ${common.ldscript_4m1m}
build_flags = ${common.build_flags_esp8266} -D USE_LPD8806

Unfortunaly not:

Compiling .pio\build\nodemcu_lpd\src\e131.cpp.o
In file included from wled00\FX.h:30:0,
from wled00\FX.cpp:27:
wled00\NpbWrapper.h:338:25: error: ‘PIXELFEATURE4’ was not declared in this scope
NeoPixelBrightnessBus<PIXELFEATURE4,PIXELMETHOD>* _pGrbw;
void SetPixelSettings(const typename T_COLOR_FEATURE::SettingsObject& settings)
.pio\libdeps\nodemcu_lpd\NeoPixelBus\src/NeoPixelBrightnessBus.h:76:24: required from ‘NeoPixelBrightnessBus<T_COLOR_FEATURE, T_METHOD>::NeoPixelBrightnessBus(uint16_t, uint8_t, uint8_t) [with T_COLOR_FEATURE = Lpd8806GrbFeature; T_METHOD = Lpd8806MethodBase; uint16_t = short unsigned int; uint8_t = unsigned char]’

wled00\NpbWrapper.h:192:98: required from here
.pio\libdeps\nodemcu_lpd\NeoPixelBus\src/NeoPixelBus.h:133:106: error: ‘SettingsSize’ is not a member of ‘Lpd8806GrbFeature’
_method(pinClock, pinData, countPixels, T_COLOR_FEATURE::PixelSize, T_COLOR_FEATURE::SettingsSize)
.pio\libdeps\nodemcu_lpd\NeoPixelBus\src/NeoPixelBus.h: In instantiation of ‘uint8_t* NeoPixelBus<T_COLOR_FEATURE, T_METHOD>::_pixels() [with T_COLOR_FEATURE = Lpd8806GrbFeature; T_METHOD = Lpd8806MethodBase; uint8_t = unsigned char]’:

     return T_COLOR_FEATURE::pixels(_method.getData());

*** [.pio\build\nodemcu_lpd\src\e131.cpp.o] Error 1
========================================================================== [FAILED] Took 7.54 seconds ==========================================================================

Environment Status Duration

nodemcu_lpd FAILED 00:00:07.540

Yeah, pixelfeature4 is undefined for that #define (Lpd8806). That seems to cause all the grief, escalating throughout the code.

Is this something I can change myself easily (I can only copy and paste unfortunaly)?

If I knew what pixelfeature4 was doing anywhere near Lpd8806 enabled code, I could suggest alternatives. However, my suggestion is to look at an older release of WLED built with Lpd8806 and known to work - at least until @Aircoookie or someone on the dev team can dig a little deeper why this code is like this:
//you can now change the color order in the web settings
#ifdef USE_APA102

#elif defined(USE_LPD8806)
#define PIXELFEATURE3 Lpd8806GrbFeature
#elif defined(USE_WS2801)


And then later:
case NeoPixelType_Grbw:
#if defined(… || defined(USE_LPD8806) || …)
_pGrbw = new NeoPixelBrightnessBus<PIXELFEATURE4,PIXELMETHOD>(countPixels, CLKPIN, DATAPIN);
_pGrbw = new NeoPixelBrightnessBus<PIXELFEATURE4,PIXELMETHOD>(countPixels, LEDPIN);

PIXELFEATURE4 is not defined at this point because USE_LPD8806 is defined.

As your error post shows, that’s just the tip of the error iceberg.

If I were to suggest anything, I would first assume your strip is RGB and not RGBW, and a change to hard-code that concept for your specific case, like this:

switch (_type)
  case NeoPixelType_Grb:
    _pGrb = new NeoPixelBrightnessBus<PIXELFEATURE3,PIXELMETHOD>(countPixels, CLKPIN, DATAPIN);

  case NeoPixelType_Grbw:
    _pGrbw = new NeoPixelBrightnessBus<PIXELFEATURE3,PIXELMETHOD>(countPixels, CLKPIN, DATAPIN);

Thank you!
I will try an older build and try if I get it working…

Version 0.091 is also not working. There I don’t get it compiled even without any platformio_override.ini

Thanks Aircookie, but its not working.
If i use
-D USE_WS2801
it works, but if I use
-D USE_LPD8806
Did anyone get LPD8806 Strip working (compiling)? If yes, what version of WLED???
Thank you!!!

For anyone affected by this issue, please see
Submitted an issue to the NeoPixelBus project: