All posts in NeoPixel

I just bought one of these for fun :


it’s a Mood Light - Pi Zero W Project Kit

soldered it all together (easy) – and assembled it all (difficult until I found the online examples)- and then tried installing the software as described here

Unfortunately I only got error messages when I tried to run the python code



Tried a few of the usual formums, but found nothing that worked until I went to Github –

and followed this :



Now all the examples work..


Next : getting it working using Ruby.


The first cut of code for the Internet button is now up and running. It’s really so far concentrated around 2 buttons and 3 response states :

Button 1 sends out a “button1” event to the Particle Cloud.

Button 3 sends out a “button3” event to the Particle Cloud.

And 3 response states.

State 0 is the “unknown state” set before the Internet button has been sent any state information. Also tied to the function “waiting_for_response” in the Particle Cloud.

 IMG 2320

State 1 – sets all Led’s to red. Tied to function “onccupied” in the buttons firmware – tied to the same name in the Particle Cloud.

IMG 2321

State 2 – sets all Led’s to green. Tied to function “occupied” in the buttons firmware – tied to the same name in the Particle Cloud.

IMG 2322

The Particle cloud advertises the 3 states tied to the specific Internet Button in our house.


This is the first step in understanding how to use the Internet button – and the first cut of the firmware. The buttons can now publish events to the Particle Cloud (which in turn can attache these events to other functions) and set states by calling functions in the buttons firmware from other software. (more about this later).

The good thing about the Internet Button is that it’s completely standalone, with the exception of a power source, currently seen as a USB plug in the pictures.

You can call functions in the onboard software of the Internet button fairly easily like this from the Particle CLI :


as one may guess this first calls the function “unoccupied” with the parameter “1”, and  returns a status (1), then calls the function :occupied” with the parameter”1”.

This is done purely for debugging – in the end I will use curl or a call from the home automation system itself, telling the button if the house is going to be occupied or not (seen from the heating systems point of view).

I ordered a “Internet Button” some time in November, and it arrived just before Christmas Eve.

In the company material it looks like this :




and I could see a number of interesting uses for a wifi connected button.

In reality it’s quite a lot less good looking and well constructed – but very interesting nonetheless.

It looks more like this 


It’s a combination of a Photon micro controller with wifi and a subsidiary board with 4 buttons and 11 neopixels (with space for a 12th – which was omitted as it would normally be obscured by the USB power cable.

More interesting is that it comes with a full cloud “enabled” development system, including over-the-air updates of the software on the Photon. 

More about this later when I get time to write up my experiences (good and bad) of getting this button integrated with the house automation system in our house.

Ada fruit just release some 3W chainable LED’s  – and their “old” NeoPixels were incredibly bright at 0.2W per pixel.

I need to get hold of some of these!


NEW PRODUCT – Pixie – 3W Chainable Smart LED Pixel « Adafruit Industries – Makers, hackers, artists, designers and engineers!: “Each Pixie not only contains that aforementioned 3W LED, it also has a Microchip PIC microcontroller. You send it the color you want to appear at standard 115200 baud (1 byte per color). You can send a longer string of pixel data and it will ‘forward’ along the messages so you can chain them like a shift register. You only have to send the data once per color change. Once set, the microcontroller does all the PWM handling for you.”


I’ve now got both my clock project and the dust/particle sensor project mounted in a frame :


ok – it’s not a terribly good photo, but the little black box at the top is the particle sensor.

The frame is quite deep, and houses all the electronics at the back of the frame. The main bit is a Raspberry Pi running software that’s mainly written by myself. I do intend to add more LED’s to display data from the sensor in the frame.

More to come.

I’m at one last reaching the “release” of my first LED circle clock driven by a Raspberry Pi – and found this guide on how to get the FadeCandy server running on your Raspberry pi :

Fadecandy Server Setup | 1,500 NeoPixel LED Curtain with Raspberry Pi and Fadecandy | Adafruit Learning System: “Fadecandy Server Setup PHILLIP BURGESS At this point you should have gone through the network configuration steps from the prior page, and should have working internet access before continuing. There’s a little more software to be fetched… “


I am using the Fadecandy board to drive multiple NeoPixel configurations – and I want them to run independently.

First a bit of explanation:

– Each Fadecandy board can drive up to 8 strands of 64 NeoPixels – whether they are neopixel rings


or a Neopixel matrix


or any other Neopixel configuration

I use fcserver-osx (or fcserver-rpi) to connect to the Fadecandy from my Ruby programs. Fcserver enables me to use the OPC protocol to communicate with the Fadecandy board, and more importantly, to let several independently running programs communicate at the same time to the Fadecandy board(s).

But this requires some careful setup of the Fcserver configuration file.

In my case I want to let one program control a neopixel ring, and another to control the Neopixel matrix. This shoddy be easy as OPC has the concept of channels, where I use channel 0 for the ring, and channel 1 for the matrix.

This was in the end (after a bit of experimentation) achieved by using the following fcserver.json configuration file.


Fade candy numbers pixels on strand 0 to the range 0..63, strand 1 to the range 64..127 etc.

This configuration file contains 2 maps where the first one maps the 64 pixels on strand 0 to OPC channel 0, and the 64 pixels on strand 1 to OPC channel 1.where OPC pixel 0 corresponds to Fadecandy pixel 64.

And even better – it works.