PixelBox – Rainbow Carnival 2010 Entry
My entry for the Rainbowduino Carnival 2010.
I wanted something that both showed off the awesomeness of the Rainbowduinos + RGB LED matrices, and was also useful. I also wanted a huge digital clock in my room, so I made one that sets itself, changes color with the time, and can play animations!
The case is made from laser-cut acrylic plastic – I designed it using Google Sketchup and made it with the help of Ponoko’s awesome service. The SVG file is here, if anyone wants to make their own. There’s a couple of flaws in the design that I’d like to fix the second time round, so if anyone does want one, let me know first. The sections are designed to interlock perfectly together in theory, based on this instructable. In practice, I had to use some glue. The LEDs are diffused using a thin sheet of partially transparent paper, which is held under the acrylic faceplate.
I designed a custom PCB for this project, with a power adaptor and socket for an XBee module. This allows the controller to fit into the small slot at the back of the case, and also enables remote control of the display. It uses a simple serial protocol that allows setting of the time, the color of the digits, writing 4-letter messages on the screen, and enabling/disabling the display.
By default the display shows a large clock with a blue background, and digits that change color with the time. It’s a little hard to see in the video, but it slowly transitions between hues. The hour and minute are mapped directly to a HSV colour, so I suppose you could get an idea of the time of day by the colour of the display. Or just, you know, read the clock.
I used the awesome Rainbowduino Firmware 3 for the individual modules. I highly recommend it to anyone using these – it’s a lot easier to use than the original firmware, and can paint backgrounds, layer text, etc. The only problem I ran into is that it prints text upside down! I solved this easily enough though with a simple Python script that flips the letters around for you. The code for the controller, individual modules, and the script is in a GitHub repo here.
I’m also working on a framework to allow web applications to control wireless devices like this through XMPP. I’m not including the one for this project here because it’s kind of hard to demo. If you’re interested in helping out with this, or think it might be cool to add to your project, let me know!