Light Painting Arm

Status: Set Aside

The aim of this project is to develop a tool for drawing pretty orbs in long exposure photographs. I’ve seen some amazing examples of light painting or light graffiti online and I’ve had mixed results when I experimented with it myself. I envisage making one or more 1m diameter light orbs as a central feature in a light painting with other features added by hand or with alternative tools (e.g. a light painting wand).

Mechanical: The prototype is assembled from spare parts I had lying around: two hobby servos, some balsa wood, LEDs and my Arduino Mega (with Ethernet Shield for the SD card reader). The arm is held together with zip ties which makes for a quick, non-permanent assembly perfect for a testbed.

Software run on the Arduino scans the LEDs across a hemisphere (the prototype is limited to 180deg scan due to the servos) while selectively lighting the red, green and blue LEDs to blend colours. Brightness of each LED is varied using pulse width modulation which is achieved by simply calling analogWrite for one of the PWM pins.

The prototype was assembled in one evening and I was quickly able to make a simple light orb. Within a week I had upgraded to three LEDs (red, green and blue) and reading image data from an SD card.


Since I originally wrote this page, much has changed. I attempted to port my code across to an Arduino UNO but it was not working and would crash when trying to draw images with high resolution (>200 pixels per row). I gave up the UNO and returned to the MEGA. Replacing the Ethernet Shield with a Sparkfun microSD Shield gave me a prototyping space upon which I installed headers for connecting the servos. I replaced the three LEDs with a BlinkM I2C addressable RGB LED. I also added a wireless trigger for my camera which automatically starts and stops the exposure. A Nokia 3310 LCD (84×84 B&W Graphical LCD) together with a Wii Nunchuck provide an interface for choosing images off the SD card and changing a few settings.

Images are stored on the microSD card in 24-bit uncompressed BMP files. The Arduino uses the SD library to access the file and reads out each pixels colours, one pixel at a time.


Deadpool – made with three separate LEDs.

LetsMakeRobots – made with BlinkM RGB LED.

To do / Ideas:

  • Replace the three LEDs with one RGB LED. – DONE
  • Improve stability of arm: hardware – out-runner wheels, ball race etc; software – smoother motions
  • Allow Arduino to take control of the camera shutter, opening the shutter as it starts the sphere and shutting either when complete or after a predetermined duration (exposing for ambient light). – DONE – A wireless trigger is connected to the Arduino via an opto-couple.
  • Portable light painting arm, big enough to be the main feature in a photograph.
  • Gear the servos to give 360deg capabilities.
  • Or swap servos for stepper motors, which give more control over speed but positioning becomes relative rather than absolute.
  • End stops or position encoding for the stepper motors.


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.