How to integrate LPD8806 LED Strip (supportet)?

Hello,
I´m trying to get the LPD8806 strip working.
Hardware:
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

[env:esp01_1m]
board = esp01_1m

LPD8806

; PIN defines for 2 wire LEDs
-D CLKPIN=0
-D DATAPIN=2

Here the complete platformio_override.ini :blush:

Example PlatformIO Project Configuration Override

# ------------------------------------------------------------------------------
# Copy to platformio_override.ini to activate overrides
# ------------------------------------------------------------------------------
# Please visit documentation: https://docs.platformio.org/page/projectconf.html

[platformio]
default_envs = esp01_1m

[env:esp01_1m]
board = esp01_1m
platform = ${common.arduino_core_2_4_2}
board_build.ldscript = ${common.ldscript_1m0m}
build_flags = ${common.build_flags_esp8266} 
  -D WLED_DISABLE_OTA 
  -D WLED_DISABLE_ALEXA 
  -D WLED_DISABLE_BLYNK
  -D WLED_DISABLE_CRONIXIE 
  -D WLED_DISABLE_HUESYNC 
  -D WLED_DISABLE_INFRARED
; 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
  -D DATAPIN=2
; to drive analog LED strips (aka 5050), uncomment the following
; PWM pins 5,12,13,15 are used with Magic Home LED Controller (default)
;   -D WLED_USE_ANALOG_LEDS
; 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
;   -D WLED_USE_BWLT11
; and to enable channel 5 for RGBW-CT led strips this
;   -D WLED_USE_5CH_LEDS

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

[platformio]
default_envs = nodemcu_lpd

[env: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.

Thanks!
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:
Npbwrapper.h
//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)

#endif

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

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);
    _pGrb->Begin();
  break;

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

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_APA102
or
-D USE_WS2801
it works, but if I use
-D USE_LPD8806
not.
Did anyone get LPD8806 Strip working (compiling)? If yes, what version of WLED???
Thank you!!!

For anyone affected by this issue, please see https://github.com/Aircoookie/WLED/issues/971
Submitted an issue to the NeoPixelBus project: https://github.com/Makuna/NeoPixelBus/issues/368