Light painting engine using Arduino and LPD8806 chipset
Java Arduino Shell
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Rainbow Machine

Rainbow Machine


LPD8806 light painting engine that streams data from a computer to an Arduino at a high rate to display high resolution images. Streaming overcomes the space limitations of the Arduino.

We mounted our LED strip on a bar that rotates 180 degrees orthogonal to the ground, making it devilishly simple to make a rainbow. We have people sit in front of it and take their photos. More...

Installation Instructions

  1. Buy this from Adafruit and get it working
  2. Install LPD8806 Arduino library
  3. Grab code and load in Eclipse
  4. Load arduino/rainbowmachine onto your Arduino
  5. Convert image files to rainbow data files using ./ input.jpg output.dat
  6. Send rainbow data files to the LPD8806 using ./ file.dat

How it works

A protocol is defined to communicate pixel colours from the computer to the Arduino frame by frame. Combined with an Arduino Uno, 115200 serial baud rate, and Adafruit's SPI high speed library for the LPD8806, rates upwards of 40 FPS have be observed.

The protocol is presently one-way. The computer streams the data without regard to how the Arduino handles it. Thus, it is the implementor's job to find the proper combination of baud rate and the computer stream rate to find a working configuration. If the rate is too fast, the Arduino will not be able to properly handle the stream. See this discussion.