I had many WS2812 (and I think some WS2811 and WS2812B) wired up to

I had many WS2812 (and I think some WS2811 and WS2812B) wired up to a teensy 3.1, using FastLED. I got some crazy random flickering using:

FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);

So I used:

FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);

And that really seemed to solve the problem. But… sometime later, the problem showed up.

Now I’m thinking about using:

FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);

But unfortunately can’t access the project to test to see if that makes a difference. My Question Is:

Is there a difference? Does addLeds() with WS2811, WS2812, WS2812B, or NEOPIXEL make any functional difference? Aren’t they all the same chip anyways?

There are slightly different timings between WS2811 and the WS2812/WS2812B (NEOPIXEL is just an alias for WS2812). More likely - your problem is related to not using a level shifter between the teensy and the leds (which is why slight adjustments to the timing can appear to fix the problem for a bit).

(or, to more directly answer your question - no, the WS2811 and WS2812 are not the same chip)

Thanks, Daniel. That confirms why I saw a difference between addLeds<WS2811 and addLeds<WS2812B, and that using <NEOPIXEL would not make a difference.