Persistence of Vision Wand

Persistence of Vision (POV) Wands are a fun way to create interesting long exposure photographs and light displays.  The wand consists of a single row of LEDs controlled by an Arduino Uno.  When the wand is turned on it appears to be flickering in a random pattern, but if you move it quickly back and forth, you will see text or an image appear.  This wand project is incredibly customizable, I've included all CAD files, firmware, build documentation, and schematics.  Feel free to choose your own color LEDs, write personalized messages, and maybe even add something new to the project!

Parts list:

(1x) Arduino Uno REV 3 Radioshack #276-128
(20x) Amber Super-bright LED Indicator Radioshack #55050630
(1x) Arduino Proto Shield Radioshack #276-140
(1x) 9V Alkaline Battery Radioshack #23-866
(1x) Heavy-Duty 9V Snap Connectors Radioshack #270-324
(20x) 1/4 watt resistors (sample calculation below)

      from the specs of the LEDs I used:
      "Continuous forward current: 25mA"
      "Forward voltage: 3V"

      using the following relationship:
      V(volts) = I(amps) * R(ohms)
      rearranged to:
      R = V / I

      we can calculate the resistance as follows:
      voltage across resistor = 5V - 3V = 2V
      2V / 0.025A = 80ohms

      I used 100 ohm resistors so that the LEDs wouldn't be operating at their maximum ratings.  Check the datasheet of the LEDs you use to calculate these values.

I've attaching a fritzing document with a breadboard and schematic view of the circuit (and included them above) for reference.
Remove these adsRemove these ads by Signing Up
Macs931 month ago

Thank you, I made the wand, but what I wanted to know was if I use under 20 led lights, I've read on these comments that I have to change the number of bits for each letter e.g. The current ways that it is set up is 12x20 as the code shows, how can I break this down tans code it for say 16 LEDs? Do I just need to take the extra 4 lines of?

Also when capturing the long exposure what is the best time to set the exposure on my camera?

Im using the ardunio rev 3.

amandaghassaei (author)  Macs931 month ago

start by wiring up 16 leds and running the same code, you'll see that all of the letters are cut off, you can go in and change the bit array (still leaving them 12x20) so that they form the letters nicely at less than 20 px. That's the easiest solution.

thanks ill give that a go to see if it works, also about the exposure of the camera is it best to set it at a few second exposure? also whats the best refresh rate to go for when capturing the image on dslr?

amandaghassaei (author)  Macs9314 days ago

do a 1sec+ exposure with the refresh rate I've got in my code.

amandaghassaei (author)  Macs931 month ago

yes a few seconds exposure is good. the refresh rate changes the amount that the letters are stretched for a given velocity. The default settings should be fine.

where about is the bit array located with the sketch?

amandaghassaei (author)  Macs9314 days ago

the arrays that look like this:

boolean letterA[] PROGMEM = {
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1,
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,

zvizvi17 days ago

Wow! fr***in' wonderful! beautiful code, too. Kudos!

rrace001 made it!1 month ago

Thank You! Love the programming. It taught me a lot! I just built one on a solder-less breadboard and it worked great (Only 16 LEDs but it is a start). I wanted to do one of these because I found an old Realistic Electronic Kaleidoscope at a thrift store and wanted to convert it to a POV. Unfortunately you cannot directly address the LEDs because it uses LM3914N chips which is just for meters I think. I am new to this stuff. I am not going to give up though. If anything the rotary contacts will come in very handy but I will give it one more shot and see if I can solder in an arduino nano or something similar. Only one channel for communications so not sure how I am going to do it unless i just solder it to the blade. Fun Stuff!

amandaghassaei (author)  rrace0011 month ago

nice job!

ram123manohar7 months ago
sister i have this wand..and it works like a i want to upgrade this..i want to add this wand a small keyboard of small push that i can change thye TEXT manually whenever i want..can you give your valueable suggestions..if u really make it..thats a gift for us

Hey there!! I was digging around in some chips that I have and I found this mm74c922n chip that I bought a while back so I looked up using a keypad with it and when I found : I thought of this post and your question... Hope this helps!!

thank you...i will sure get back to this..:)

amandaghassaei (author)  ram123manohar6 months ago
that sounds like a cool project. if you want to use an existing keyboard, I think you'll have to use your computer as an intermediate. If you make your own keyboard, you can listen for keypressed with digitalWrite and then get those to change the value of "povtext"
AlfredNobel1 month ago

How could I change the code so that it only uses 8 LEDs instead of 20? Like pins 6-13. I'm having trouble with the data1 and data2 for loops for a 8 row, 5 column character set I made. I can't seem to get anything from data2 to display out to the LEDs, either in the initialization or in the actual character blinking.

john marvin2 months ago

Good day! can i attached a motor on your project, is it possible? thanks

amandaghassaei (author)  john marvin2 months ago
yes, definitely
roeyb12 months ago

I made the wand but It is just turning on all the lights and not changing. I am also getting this: avrdude: stk500_getsync(): not in sync: resp=0x00

amandaghassaei (author)  roeyb12 months ago

Sounds like the Arduino software is having trouble talking to your Arduino. Try these solutions:

  1. unplug the usb connection and plug it back in, then try to upload again
  2. make sure you have the Arduino Uno (or whatever model Arduino you are using) selected under Tools>>Board
  3. sometimes the Arduino doesn't like it when you have things connected to digital pins 0 and 1 during the upload process (these pins are connected to the Serial port as well), try disconnecting any wires from those pins and re-uploading.

let me know if that solves it! Also what kind of computer are you using? MAC/PC?

Thanks so much! It works now.

amandaghassaei (author)  roeyb12 months ago


PC and I will try it ASAP

unigamer2 months ago

Great instructable! I used this as the basis for my version which uses a Pro Mini. I changed a few things:

- removed arduino equivalent commands (they're slower and I couldn't be bothered re-writing them for my setup)
- reduced the number of LEDS from 20 to 18 (consequently had to change the bit shifting code a little bit)
- added the ability to change the message using a serial connection (I use a bluetooth serial adapter)
changed the way the letters are called so different functions are not
needed for M and W (they're longer than the other characters)
- added punctuation marks: ? ! / : + = -

My code is available from this page:

Or if you want a direct link:

unigamer unigamer2 months ago

Also, I wrote a little program that converts at bitmap monochrome into 1's and 0's to make it easier to draw pictures for the wand. It will work with the code in this instructable as well as mine (just be sure to make the image height the correct number of pixels to the number of LEDs you have!

amandaghassaei (author)  unigamer2 months ago


hammondsenior2 months ago

hi there, firstly I love this! I made one of my own and it worked like a dream! It was my first arduino project and I learnt loads from it. I like to make various devices to use for light painting photography which is why this appealed to me so much. However, I got ahead of myself and decided to make a bigger version. Basically I made the same thing but instead of all the LEDs being individually wired to the shield, I put four times the amount of LEDs in and soldered them into fours. Now my wand is 80 LEDs long, with there being four for every wire from the shield if that makes sense. It works the same as the 20 LED wand, only I didn't consider the dimensions of the letters, so now they come out the same width as they do with the small wand, but are four times the height! Can anybody help me with what I can do to make them four times wider to match the height? Any help or advice would be greatly appreciated.
One other thing, I soldered a 26 way socket onto the shield and ran the ribbon cable from the corresponding plug to the LEDs. It works the same, but now it allows me to easily unplug the arduino from the wand and move it to a different sized or coloured wand. This was to save me having to buy multiple boards and shields, and to allow me to chop and change if I'm out taking light painting.


amandaghassaei (author)  hammondsenior2 months ago

very cool, increase the value of "refreshrate"

hneira3 months ago

Hi, beautiful Project, but I try change the text ("POV" for "HELLO") and the text not change. Do you know why?

hneira hneira3 months ago

Solution: I disconnect the pin 0 and 1, and I discharge the proyect.

amandaghassaei (author)  hneira3 months ago


kunal03 months ago
i refer your instructable for Persistence of Vision (POV) Wands step by step, but instead of using arduino uno i made standalone circuit & made same connection, Persistence of Vision (POV) Wands circuit not work, i got no success in finding in problem can anyone suggest me where i making mistake
vigneshr154 months ago
Nice one
tomsv5 months ago
Thanks for the tutorial !!
I have made one, pics here :
amandaghassaei (author)  tomsv5 months ago
cool! looks great!
It seems like RadioShack don't carry Arduino Proto Shield anymore so I have to order it from another site, but my proto shield looks different than yours. Will it work? Or I have to order exact type?
amandaghassaei (author)  yenung5 months ago
any protoshield will work, you can even make your own from perf board:
parth17996 months ago
amandaghassaei (author)  parth17996 months ago
find the line that says delay(100) and make it smaller - like delay(40). you will have to try and make adjustments from there.
jukarr11 months ago
hello amanda.

I am a beginner arduino. Starting today you are my goddess. Your project is fantastic. Congratulations and thank you very much for sharing.
amandaghassaei (author)  jukarr6 months ago
glad you liked it!

Get More Out of Instructables

Already have an Account?


PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!