New member of the WS2812 family

There is a new addition to the popular WS2812 family of RGB LEDs with integrated controller: A 8mm through hole version. Right now they seem to be in pilot production stage. The only place that has them is Soldering Sunday where they are called PixelBits. My understanding is that they will also be available at the usual sources later this year. I got a couple of them to test for compatibility with my light_ws2812 library.

What’s pretty cool about these LEDs is that they are diffuse – no more blinding unidirectional light. This might be very useful for indicator lights. Furthermore, you can easily wire them freeform without a pcb. I see a lot of RGB LED cubes coming up…

8mm_led

The LEDs come with four leads: VCC, GND, Data in, Data out.  Instead of the thin bendy leads that I am used to from normal RGB LEDs, they come with with thick, rigid, pins which can not easily be bent arbitrarily. This could be a measure to improve heat sinking, but is a bit annoying when working with these LEDs. The data sheet states that the pitch of the pins is 2.54 mm. Strangely enough they do not quite fit into a normal protoboard, it seems that the real pitch is slightly smaller (2.5 mm?).

8mm_led_shield

I mounted one of these LEDs on a Digispark protoshield. In contrast to the normal WS2812, the LED worked very well without an external decoupling capacitor. This may not be true for longer strings, though, although it would be a great feature. I used the Digispark to extract the timing from the LED, as described earlier.

allthree

A summary of the timing values compared with the earlier WS2812 LEDS is shown above. As you can see, the timing is virtually identical to the WS2812B timing. This means that the light_ws2812 library is able to support these devices without any modifications.

17 thoughts on “New member of the WS2812 family”

  1. I’ve been waiting for people to start blogging about them.
    It all started at Maker Fair in New York I was talking to Gene Foulk of HypnoCube.com
    I was explaining that I have a lot of different manufacturing services through my website FactoryForAll.com
    He suggested that I make an LED with the WS2811 inside.
    I decided to call them BulletPixels. However Paul at SolderingSunday primarily sells to children so he renamed them as PixelBits. If anybody else would like to start selling these LEDs please let me know.

  2. Hi Tim,

    I’m trying to get the LED’s mentioned in your article above working with my Arduino UNO.

    I’d really like to use your lightweight library, but I’m having trouble following the example files.

    How do I determine the correct data port (#define ws2812_port B) for the ws2812_config.h file?

    Will the correct pin value for (#define ws2812_pin) match the data out pin on my Arduino?

    I was able to fix invalid references to functions by enclosing all function definitions in light_ws2812.h like this:

    #ifdef __cplusplus
    extern “C” {
    #endif

    void ws2812_setleds
    void ws2812_setleds_pin
    void ws2812_sendarray
    void ws2812_sendarray_mask

    #ifdef __cplusplus
    }
    #endif

    I’ve read your comments on Hackaday regarding your library and am eager to get it up and running for Arduino, it sounds like you spent the time to make an accurate/efficient library.

    Previously I’ve used the Adafruit NeoPixel library and most of the time it works, but intermittently an LED won’t light, and I suspect this may have something to do with timing (WS2812B vs. WS2812?)

    Thanks in advance.

      1. Hi Tim,

        Thanks for the pinout. I had to school myself on Port Registers but I have it working.

        I was able to get digital pins 6 (Port D, 6) thru 13 (Port B, 5) working.

        Was there a specific reason you chose to define the port and port pin number in the seperate config file?

        Is there any reason you can think of for why I would not want to / be able to modify the C functions to take the port and port pin?

        Sorry if this seems like a strange question, I’m new to C, my experience is more in the C#/.Net area.

        Thanks again!

      2. yes, in C it is common to use header files for specific configurations. You don’t change the .c files unless you want to add new features.

  3. Hi Tim,

    Ran across something when using your library with the Pixelbits, seems if I send 255 for R, G and B, they blink..I couldn’t find a mention of this in your code or on the site I bought them from. Free feature? For now to get solid white, I just pass 255 to two of them and 254 to one.

    1. That does not seem quite right. There are some hardware stability issues with WS2811 based device. Are you using caps on each device? Sometimes they flicker if the power supply is not stabilized sufficiently well.

      1. Hi Tim,

        I ended up confused, thinking these were WS2812’s (Hackaday listed them as the WS2812 family).

        Reading the WS2811 datasheet shows I need a 33ohm between DIN and DOUT and a 104 cap from VDD to GND.

        I’m currently pulling 5v from my Arduino which I believe is stabilized and should be able to handle 4 LEDS at full brightness.

        Thanks for replying and having patience, trying to catch up here as quick as I can.

      2. WS2811 is the controller chip, WS2812 is the LED with WS2811.

        The resistor will help to stabilize more, but the most important part is the capacitor for each LED.

  4. Hi Tim,

    Adding the 33’s between the data lines and the 0.1 caps to ground worked. Adding the 100’s between the 5v and VDD didn’t work for some reason.

    Thanks again for the help.

Leave a comment