The Chixel Array
That Guy Did Something ...
I really like building seemingly useless things. My house (and lab) seem to be full of old junk that I've scavenged and plan to use "someday". Most of the time these things end up used in projects that seem pointless to most people. What many people don't understand, is that I find the process of inventing some sort of challenge/goal, working through the design process, coming up against - and solving - inevitable problems, and finally ending up with a final product actually makes me a better and more creative scientist. Believe me, this isn't a waste of time.
Below is the story of one of my latest projects, "The Chixel Array".
I was wandering around the dollar store on a Friday night a few weeks ago and came across some little decorative chickens. I don't know why, but I started to obsess over these things. I couldn't get them out of my mind and for some reason I was fascinated with them. Little did I know but these chickens would end up consuming my entire weekend as I embarked on a coding-building-engineering-art project.
I got home and dropped off the chickens at my workbench where I noticed another unfinished project involving some of my favourite LEDs - the WS2812B's AKA "neopixels" as branded by adafruit. These little 5V wonders have vibrant, rich colours, that are super easy to control via a microprocessor due to their integrated drivers. You only need one IO pin and each LED in the chain is addressable. I had already had some WS2812B strips already wired up and mounted on a piece of wood organized as a rectangular array.
At this point I needed to somehow attach the chickens to the LEDs. In my mind, I was imagining the chickens being lit from underneath by a dynamic show of colours and patterns. The challenge was figuring out how to mount the chickens on the LEDs without causing damage. The other problem to solve was figuring out how to diffuse the light of the pixels because it didn't look good if I just dropped a chicken on top. The LEDs can be super bright (my favourite setting) which was kind of too much for each chicken - it just looked weird (try it yourself). Anyway, back to the dollar store I go to search for something that might diffuse the light a bit and give me a good surface to use as a mounting platform. It took me about 5 mins to stumble across some little plastic jars that seemed to be for holding small beads. I liked them because they were the exact right size for a small chicken and had a translucent plastic cap that was perfect for diffusing light.
I happened to have some leftover "glue dots" from a house party (thats a whole other story). These things are little 1cm diameter adhesive dots you can peel off a roll of backing paper. They are transparent and pretty sticky. I put one on the bottom of each plastic jar and they conveniently fit on the LEDs in a way that formed a 4x4 array of chickens. And guess what?! This was the moment I invented THE CHIXEL!
CHICKEN + NEOPIXEL = CHIXEL
Sweet. So now I only had to program in some light patterns and build a proper circuit. I had a Digispark board lying around which is just an Attiny85 microcontroller that is easily programmed via the Arduino IDE (note: follow these instructions if you have not used the digispark with the Arudino IDE before). I mounted the digispark on some perfboard and wired up a 2.1mm DC barrel adapter so I could power everything from the wall or power it all via a 4xAA battery pack. I also made included a big fat 1000uF/25V cap in the power line to minimize voltage spikes, as per Adafruit instructions. The WS2812B LED strip has three pins, two are for connections to 5V and GND, and the last one is the data pin that is connected to pin 0 on the digispark baord via a 330kohm resistor. Finally, I modified some code from Adafruit's Neopixel library examples to create a light show/pattern that I thought looked cool (control code available on the Chixel Array GitHub).
Here is the board mounted underneath the array of Chixels:
And the end result in all its chixel array glory: