There are a number of factors affecting the depth of the color change and how long the change persists after the LEDs are turned off.

  • Print fill density
  • Thickness of the filament at the top of the LEDS
  • LED drive current and voltage
  • Length of the LED illumination.

After some experimentation with a single LED I went with a print of 25% fill density and 40mils of plastic over the top of the LEDs.


An Arduino Mini Pro drives the LEDs. There is no multiplexing for two reasons;

  • I had enough I/O lines to drive the LEDs directly
  • The depth of the color change is a function of how much UV energy is exposed, so running the LED at anything other than a 100% duty cycle will be less effective.

There are 15 basic patterns which are chosen at random. Each choice is randomly inverted and randomly rotated to provide 120 pattern combinations. Once the final pattern is worked out the LEDS are illuminated for 2.5s. There is a delay of 20s before the next pattern is chosen to show off the color changing effect.

This ended up looking better than I though it would. By driving the LEDs a little harder the color change effect could be extended. A larger display that can show more complex images would be interesting, and using UV laser diodes instead of LEDs might create a deeper and longer lasting effect. After the initial illumination the display is daylight readable and might be useful outdoors.