Last month while he was visiting, my friend Rony and I built a picture frame that can display three images on a single piece of paper. Two of the images are mapped to the red and blue channels and linearly combined, and the third image (the word MARCH in the video above) is projected onto the paper from behind using a stencil.
A microcontroller controls a set of red, blue, and white LEDs that light the picture, selecting each image in sequence by turning on one set of LEDs at a time. Rony built the frame itself out of the black foam-core that architects use to make models, and it is really gorgeous.
One of the challenges was calibrating the red and blue levels in the printed image such that under blue light the blue-printed image disappears completely, and the red image shows with good contrast, and vice versa under red light. This required a lot of different test printouts, which after the project was over I taped above my desk at home. I think they look pretty cool on their own.
The images were generated with a tiny opencv-based program that you can find here. If you want to use it yourself, you’ll probably have to recalibrate the WHITE_POINT macros for your printer/paper. We printed the final image on acid-free paper so the colors don’t change over time.
By the way, opencv is a great library for doing real-time computer vision. We used it for a very trivial operation, but the samples that ship with the library do things like real-time face detection, and there’s even an eye tracker that uses commercial USB webcams that some people are working on.
This was my first project using an Arduino and I was completely blown away by the platform. The Arduino is an Italian-made open-source electronics prototyping platform. Ours was a very simple Arduino project, just fading in and out some LEDs (you can get the code here), but the platform can do a lot more. We used a Duemilanove (“2009″) board (pictured below) which has many digital input/output and analog input pins.

The board comes with a very simple IDE based on Java, Processing, and avr-gcc. You code for the device in C and a single click reprograms the onboard Atmel microcontroller over a USB cable. The documentation is excellent and the platform is extremely easy to code for; it only took us about 15 minutes to get the basic functionality working for this project. There’s a great serial interface you can use for printf-style debugging; just use Serial.println to send some output to your PC while your code is running. And Arduinos are extensible via a series of pluggable shields that can provide additional functionality like GPS, WiFi, and touch-screen support.
It really is the perfect starter platform for hardware hacking, and if you have any interest in this sort of thing at all, I strongly urge you to go buy the Arduino starter pack from adafruit industries right now.
Overall, this was an awesome way to spend a couple of days, and it was also great to work on a project with Rony, who deserves full credit for this idea (which he had while we were jogging around the Nymphenburger Palace) and for the majority of the work. You can see more photos of the project on Rony’s flickr photostream or mine.

Posted on 20 April 2009
- Leave a comment
- Subscribe with Google Reader
- Follow me on Twitter
Did you like this article?
-
Pingback from The How-To Blog » DIY multi-image display frame on 22 April 2009 at 8:22 pm
-
Pingback from DIY multi-image display frame | SquareCows on 23 April 2009 at 1:00 am
-
[... - nat.org is another must see place of advice. Car insurance claims [... -
-
Really cool deal!
If you can please email me the song you have playing in the background of the video, I would very much appreciate it. It is very familiar and nostalgic. My email is Taurus1551@aol.com
Thank you.
-Kyle






7 comments