Skip to content
Light painting engine using Arduino and LPD8806 chipset
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit 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.

You can’t perform that action at this time.