Light painting with Arduino

I’ve been interested in painting with light for almost as long as I’ve been interested in photography.

Recently, there has been a number of projects that have popped up where people are taking light painting to a whole new level and I really wanted to try it myself…especially after seeing the incredible Light Scythe project.

I eventually set about down a couple of different paths in my quest to build something portable that would allow me to create some unique images but kept hitting road blocks with either incomplete documentation or software tools, obscure hardware that I couldn’t build or source, etc.
Light painting with Arduino
I already had 3d printed the holders and ordered/sourced everything for the Light Painter I found on but unfortunately, it’s a work in progress, and my Python skills lacking just enough to prevent me from getting it all working beyond a simple light demo. I also began to suspect there was a better way to do this.

When I had all but given up on the project, I stumbled across Michael Ross’ light painting tutorials (and this 30mb PDF tutorial). This lead me to simplify my ‘light wand’ and scrap the wireless portion from the light scythe/painter (for now at least) and use a simplified version of what was described in the tutorials. Fortunately, I had everything on hand and to be honest, the bill of materials to do this is incredibly short.

Using an RGB light strip from Adafruit (LPD8806 version) and an Arduino Mega (in my case, a clone board), I was able to literally wire it up in about 2 minutes, duct taping the arduino to the Home Depot tube from the Light Painter derivative. For power, I’m just using a 9V battery connected to the power port on the Mega via this plug.
Light painting with Arduino
The RGB strip has 4 solder points (make sure you connect the IN side, not the OUT side of the strip – denoted by the letters at the solder point – avoid DO and CO!): Ground, +5V, Data In (DI), and Clock In (CI). Ground and +5 connect to the corresponding pins on the Mega with Data connecting to pin 51 and Clock connecting to pin 52.

Then, using the amazingly simple and awesome Digital Light Wand generator app (Windows only), I was able to load in any graphic and export out a complete Arduino app that contained all my custom settings for my painting, with pauses and durations that can be adjusted.

I found I had flip the images horizontally for my setup and add a longer duration for LED on states.

Lightwand Code Generator

Once I had saved the output, it was just a matter of uploading it to the Arduino Mega and plugging in the battery for the sequence to start. Here my cat Pixel gets to see how it works:

My first attempts to capture it with my camera were poorly timed but when I finally got things figured out, I was ecstatic – even if my living room was a little narrow for my website’s logo:

Light Sabre 1st attempt

The banding on the image is caused by reflections from the plastic tube which you can see in the closeup of the LEDs above. I’ll likely ditch the tube and mount the LED strip to a strip of wood to minimize the reflections.

There seems to be a fair amount of work already out there for making the process easier to use with variants that include dual LED strips for better definition, diffused coatings on the strips to better distribute the lighting and hardware addons such as SD card readers that can store multiple image sequences that you can select with a dial on the unit itself. I’m going to be building out my ‘bodged’ together light wand with these features…although when I first showed my girlfriend what I was working on, she (somewhat disappointedly) thought I had built a light sabre…I think I’ll continue to call it that.

Further attempts outside yielded slightly better results, plus I dug out my wireless remote to trigger the camera making for much easier setup rather than the self-timer mode I used previously:
Light Sabre test #2

I like the light cast onto the grass in front of the image…would look great on a wet street. But lots of easily fixed issues still remain. Enclosing the arduino in a box will help remove the random green light swirls from it’s power LED and definitately dumping the clear plastic tube will remove the pixelation of the images and muted colors…although it kind of looks like an old school CRT display with the horizontal lines through each letter.

Judging from some of the incredible creations in some Flickr Groups, there is a lot of creativity that light painting can unleash!

Stay tuned for lots more ‘digital graffiti’ from me over the coming months as I fine tune the process.


  1. Ryan says:

    I am planing a new project setting up an Arduino Uno R3 “communicating” with an PLC. the goal is that the arduino controlls the lpd8806 LED RGB strips ( I got from for $117 dollar ). The signal to choose the light actions comes from the PLC. I know that its possible to drive the LED strips but whats with the arduino gets the commands from the PLC (its just high or low signal).

%d bloggers like this: