• I think I had to call

    pinMode(pin, 'output')
    

    additionally, before neopixelWrite() did anything. (I am using GPIO2 on an ESP-01 board.)

    As for the test:

    1. Before the pulses start, there is a 100 µs high pulse followed by a 100 µs low pause, which should not be there.
    2. The data bit pulses are a bit long, especially those for 0. I measured 550 ns, which gets recognized by standard WS2812 LEDs as a 1, so I always get three white LEDs, as every pulse is interpreted as 1.

    I have repeatedly pointed to this really excellent article which describes the needed timing: http://wp.josh.com/2014/05/13/ws2812-neo­pixels-are-not-so-finicky-once-you-get-t­o-know-them/

    Or, maybe just use the timings from the manuka/adafruit code, where you have taken the rest of the code from. I am going to add two screenshots...

About