Controlling WS2812 LEDs - How to do faster?


I’m giving in and buying a pixel ring instead !


@hansamann - looks like our NeoPixel library got a bit jumbled while we were updateing it, and some code got updated while other bits did not.

I just pushed new code that I tested on an 8x8 RGB-123 board (with the WSD2812b pixels) and an older 16x16 RGB-123 board (with the WSD2812 pixels) - and both are working great!


@back_ache - forking it, or creating a new library for the 2811 chipset would work best - the library is already quite slow, and constructing bytes on the fly with only a definition of 1 and 0 + busspeed would be far too time consuming.


For now I am just going to get my neopixel ring working, I work like to check the codes dependency, namely the version of the impos, how do I check it and if necessary force an update?


That note about release 26 can actually be removed from the Git repo - it was from a many months ago when we were beta testing a new release and only a few people had it. I’ll go do it now :slight_smile:

If your imp is online, it has the proper version of the impos.


Is this code compatible with both imp001 and imp002 - I still have the issue that the code throws an exception, see above. On imp 002.


Oh. Sorry. Did not see your post. I will try out the new code later and report. Thx!


I just tried the latest code. This time on my imp001 - no error or so, but the RGB123 8x8 board is simply not showing anything. It’s powered by 4A/5V and GND are connected to IMP - pin7 used for data in.

I put a log in the animationLoop method - it is being called, but again nothing at all happens.

I copied the code straight from the github/master above. Last update was 3months…are we talking about the same code?


OK, new code location is here if anyone else is followign the link posted above:


The code should work with both imp001 and imp002 (hardware is the same). I updated it this morning (and again just now), so if you’re seeing changes that are 3 months old you might be looking at an old version.

You should have the following connections:

5V (RGB-123) -> Vin (imp)
DIN (RGB-123) -> Pin7 (imp)
GND (RGB-123) -> GND (imp)

Your power supply should be hooked up to the beefy 5V and GND holes.


I can’t get my ws2812 neopixel ring working either, I assumed it was my gross incompetence that is going to lead to me being pelted with dead led’s at the upcoming London meetup.


I know @jwehr has gotten the NeoPixel ring to work - perhaps he can chime in here.

We have a couple of the 24 NeoPixel rings on their way for an upcoming hackathon, so we’ll be able to test with that hardware soon.

What’s not working @back_ache? Is it not displaying anything, or is it being jittery, or something else?


Yeah, I have two rings… one is in the post lamp outside my house, and another is attached to an Aria board, and several singles. I’ve used several different voltages…3.3 - 5V and VBAT from a LiPo, all work fine. From a hardware side, make sure you are on a MOSI pin and going to the input. I’ll have to check what version of the software I am using. I did update at some point, and I’ll load the latest code when I get home…

I’ve been exhibiting it all the maker meetups we have been doing… kids love seeing it change color when someone tweets, or using the Pitchfork color picker.


I’m working on a two sided imp breakout with an imp on one side, and a LiPo charging circuit and switching reg on the other, along with one or more Neopixels. The idea is to pair it with one of the really small LiPos and make connected wearables…earrings/necklace/watch ect…

Maybe post some pics of your setup?


I updated my Neopixel models to the new code. Apparently GitHub had somehow screwed up the code in the device.nut file, but Tom took care of it. I have it working.


I have it working with a neopixel stick (8 leds).
Make sure you dont reuse the pin later, I spent some time debugging why it would only work one time, till I find that later in my code I assigned the same pin as regular digital out, resetting its spi mode.


I connected it to a beefy 5v PSU with a snubber capacitor across it (as per adafruits recommendation as apparently even the best PSU’s can spike on startup).

The ring lit one led (green) which after a few seconds went off and that was the end of that.

I connected the snubber across the 5v and ground and am wondering whether I incorrectly did so and made the spike problem worse.

If ws281*'s are so vulnerable to spike it make you wonder why they don’t include a regulator on a board that has several of them.


I hadn’t read about using a cap. I’ve connected rings in all sorts of ways and not seen any of them go bad. I suppose you could have gotten a bad ring… do you only have one?


I didnt cap my neostick either, but I power it from a USB hub, so maybe its cleaner than a wall wart.


yeah, just have the one as I has previously going to use a 64-led strip (hence the beefy PSU)

I moved to using a ring as my strip isn’t compatible with the library (looks the supplier sourced my strip from alibaba rather adafruit) and whilst I may return to it at a later date (especially as I cut the plug off so can’t return it) I just wanted to work on the middle tier.

Maybe I’ll rewire it to use my aprils 3.3 supply and if that works, move to powering the whole lot with a usb wallwart