The code I used in the Arduino sketch demonstrates direct port manipulation, which is a fast and powerful alternative to digitalWrite().
Update 3/10/2011 : Finished adding the Music Synchronization section of this Instructable.
Update 3/20/2011: I decided to build Lampduino instead of the coffee table.
Note that the flickering in the video below was caused by my video camera. When viewed with the naked eye, no scanning is perceived, and the lights do not flicker.
Music Sync Mode:
Arvid "Try (fenomenon remix)"
Syncing to Daft Punk's "Around the World:
Free-running mode (without music synchronization):
Step 1: Acquire the Parts
25 LED's - I used warm white 5mm LED's purchased on eBay
5 resistors - I used 100 ohm, but the exact value will depend on what LED's you use. I will explain how to calculate in the Wiring step.
NOTE: You may need also need 10 diodes and different resistors, especially if you are using white LED's... please the Troubleshooting section in step 3 for details.
Arduino - I used a Duemilanove clone - in Step 7, I switch to a much cheaper alternative.
white foam board
.005" thick matte drafting film - I bought a sheet from a local artist's supply store. The smallest sheet they had was way more than I needed - 24x36"
If you want to implement music synchronization capabilities, you will also need some more parts, as discussed in the Music Synchronization step.
hot glue gun
The LED's I used were point source water clear. If you don't want to deal with hotspots in your display, diffused would be better. I had to put blobs of hot glue on mine to diffuse them. The photo below only shows bits of the foam board, because I forgot to photograph the parts before I started. The piece I used was about 16x20" to start with.