The Sandworm primairily serves to show the status of continuous integration tests — the nose is the current state, with history of past states receding back along the body of the worm.
As well as showing build state (green for passing tests; red for failing tests; blinking for a broken build), the Sandworm shows strobes in different colors as reminders for events. (In the video, yellow indicates an imminent meeting. Not pictured, blue signals time to get coffee, white is time to go home.)
The lights are controlled by an Arduino sitting on the ceiling tiles above the worm. It communicates (serial over USB) with a desktop computer for status information.
A rotary dial allows selection among several projects (the Arduino reads the pulses from the dial and communicates with the computer, which then sends new state); dial 9 to start coffee time.
The system uses several libraries available on github:
Matthew Fickett's Desk Meters project (analog meters and lighting for a custom desk) also makes use of these libraries.
The light enclosure is a reuse of a project of Matthew's — somewhat the worse for wear.
Were I to reimplement it, I would put most of the processing desktop-side in Python, which would allow more rapid development of code to render color patterns, and more processing in that step. I might also look into obviating the Arduino entirely; neither the LED strip nor the rotary dial has a complicated interface, and in this setup it requires the desktop computer always be connected anyway.
2011-11-23 / Plexiglass, Paper; Arduino, Addressable RGB LED Strip, Rotary Dial; Python
Created by and © 2011 Mark Fickett except where noted. I try for valid XHTML 1.0 Strict and CSS.