loading
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.

Step 1: build a support for your wand

The first thing you'll want to do is make a mount for your project.  I laser cut a piece of acrylic into a wand shape, but you could use a piece of plywood, cardboard, or plastic.  I've attached the adobe illustrator and eps files of the wand and correct hole 0.1" hole spacing for the LEDs and resistors; even if you don't have a laser cutter, these files still might be useful to print out as a template.  Drill out the holes with a drill and a small drill bit.  The rectangular holes at the bottom of the wand will be used for mounting a 9 volt battery.
<p>plz give that code you used in ur pov and detail about the version of programmer </p><p>: </p><p>sunil32150@gmail.com</p>
<p>any suggestions on how I can mount this to a platform I want to have musical pov notes appear over a mp3 player im building </p>
<p>How far apart are the rows of LED's and resistors?</p>
<p>Where can I find the illustrator file for the lasercut?</p>
Is there any way to make a longer wand? I haven't used arduinos before.
<p>This is a really cool project!</p>
Codes are not verifying in arduino uno. Please can you send me a correct code at my email address. rajatnegi108@gmail.com
<p>it work perfectly on arduino 1.0.6 but new arduino version 1.6.5 not support it. plz correct this problem.</p><p>thank you. </p><p>my camera is not a good one ;)</p>
<p>hi amanda<br><br>i got a problem (error message) when uploading the program in arduino 1.6.5<br>can you fix it?<br><br>Arduino: 1.6.5 (Windows 7), Board: &quot;Arduino Uno&quot;<br><br>E:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IE:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IE:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Users\CHATHU~1\AppData\Local\Temp\build7179824887335632129.tmp\FYP1LVPH0OJ0IKJ.cpp -o C:\Users\CHATHU~1\AppData\Local\Temp\build7179824887335632129.tmp\FYP1LVPH0OJ0IKJ.cpp.o <br><br>In file included from FYP1LVPH0OJ0IKJ.pde:26:0:<br>FYP1LVPH0OJ0IKJ.pde:79:19: error: variable 'letterA' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:102:19: error: variable 'letterB' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:125:19: error: variable 'letterC' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:148:19: error: variable 'letterD' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:171:19: error: variable 'letterE' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:194:19: error: variable 'letterF' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:217:19: error: variable 'letterG' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:240:19: error: variable 'letterH' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:263:19: error: variable 'letterI' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:286:19: error: variable 'letterJ' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:309:19: error: variable 'letterK' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:332:19: error: variable 'letterL' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:355:19: error: variable 'letterM' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:378:19: error: variable 'letterN' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:401:19: error: variable 'letterO' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:424:19: error: variable 'letterP' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:447:19: error: variable 'letterQ' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:470:19: error: variable 'letterR' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:493:19: error: variable 'letterS' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:516:19: error: variable 'letterT' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:539:19: error: variable 'letterU' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:562:19: error: variable 'letterV' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:585:19: error: variable 'letterW' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:608:19: error: variable 'letterX' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:631:19: error: variable 'letterY' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>FYP1LVPH0OJ0IKJ.pde:654:19: error: variable 'letterZ' must be const in order to be put into read-only section by means of '__attribute__((progmem))'<br>variable 'letterA' must be const in order to be put into read-only section by means of '__attribute__((progmem))'</p>
<p>i also had the same issue even with the Arduino IDE 1.6.5. change all the boolean variables to const boolean variables. it will work ! :)</p>
<p>plz give me the .hex file for atmega8 i have a atmel board.. with isp programmer plz</p>
<p>we must use 1.0.5 version it is good.., the next versions cannot be used. thoose will show some errors.</p>
<p>still giving error &quot;text overflowed by xxxx bytes&quot;.</p><p>Please help</p>
<p>can u plz send me the .hex file of this project.. I'm using the avr board with atmega8. i'v tried a lot with atmel studio 6 to get the hex file but it doesnt works .. so plz send me the .hex file for atmega8 @ yashusharma093@gmail.com plz... Thnku</p>
<p>This Code isn't compiling with Arduino 1.0.5.</p><p>I am using Arduino with AtMega8.</p><p>It is Showing this error.</p><p>Can you help?</p>
<p>hi ashish once check the digital and analog pins of atmega8. and give properly in code. then it can works..,</p>
<p>hi.., the project is good.., there are some mistakes in program. after the last for loop some lines must be commented or else it will not shows more then one letter. plkease check it.</p>
<p>hey author i made a prototpe without using the resistors. everything else is same. When i run the sketch by usb power it works well but when i use a fully chaged 9 v battery, it runs for sometime and then reboots and after that whenever the code starts running it again reboots. To see it work correctly again, i have to wait for atleast ten minutes. Then when the code runs, the same problem persists. Is it due to not adding resistors? If so then is there a way to add them onto this prototype without desoldering and resoldering it? (Like on the ground wire or something else)</p>
<p>Hi guys, i wanted to somehow change the Pin connections order, but i think i need the library to do that, does someone have the library so that i can change that?</p>
<p>@<a href="http://www.instructables.com/member/amandaghassaei/" rel="nofollow">amandaghassaei</a> can you give me the working code cause i cant run my program there are to many error when I try to compile my codes</p>
<p>Paste here the error log. Before you do that try to replace &quot;boolean&quot; to &quot;const boolean&quot; in all the code, it worked for me in this way.</p>
<p>here's the code that occured after i changed the values,. </p><p>Arduino: 1.6.1 (Windows XP), Board: &quot;Arduino Uno&quot;</p><p>Build options changed, rebuilding all</p><p>FYP1LVPH0OJ0IKJ.ino:678:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:706:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:734:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:762:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:790:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:818:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:846:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:874:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:902:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:930:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:959:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:987:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:1017:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:1046:49: error: 'sendToWand' declared as function returning a function</p><p>In file included from FYP1LVPH0OJ0IKJ.ino:26:0:</p><p>FYP1LVPH0OJ0IKJ.ino: In function 'void sendToWand(const boolean*)':</p><p>FYP1LVPH0OJ0IKJ.ino:1081:33: error: 'letterArray' was not declared in this scope</p><p>FYP1LVPH0OJ0IKJ.ino:1085:33: error: 'letterArray' was not declared in this scope</p><p>FYP1LVPH0OJ0IKJ.ino:1089:33: error: 'letterArray' was not declared in this scope</p><p>FYP1LVPH0OJ0IKJ.ino: At global scope:</p><p>FYP1LVPH0OJ0IKJ.ino:1103:51: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:1131:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:1159:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:1187:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:1215:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:1244:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:1272:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:1301:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:1330:49: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:1358:51: error: 'sendToWand' declared as function returning a function</p><p>FYP1LVPH0OJ0IKJ.ino:1386:49: error: 'sendToWand' declared as function returning a function</p><p>Error compiling.</p><p> This report would have more information with</p><p> &quot;Show verbose output during compilation&quot;</p><p> enabled in File &gt; Preferences.</p><p>&quot;can you pls!! upload here the program that you used,. the program that is no need to be edited and ready to upload in an arduino&quot;</p>
<p>try using an older version of the Arduino IDE</p>
Hi again!! @mergim halimi. I already replace the &quot;boolean&quot; to &quot;const bolean&quot; but theres an error again<br><br>Arduino: 1.6.1 (Windows 7), Board: &quot;Arduino Uno&quot;<br><br>sketch_mar16a.ino:1:1: error: expected unqualified-id before '/' token<br><br>sketch_mar16a.ino:8:15: error: 'povtext' was not declared in this scope<br><br>sketch_mar16a.ino: In function 'void loop()':<br><br>sketch_mar16a.ino:858:9: error: 'povtext' was not declared in this scope<br><br>This is another error ive got can you help me to fix this??. Thank you
<p>try using an older version of the Arduino IDE</p>
Hi!! Did you change anything in thprogram or just the boolean to const boolean??? @mergim halimi
<p>Anyone know where I find the library &lt; avr / pgmspace.h ????</p>
<p>you kids are so cool - I love this!~!</p>
<p>Hi guys, im doing this project but i want to change the order of my pin connections, how can i do it in the arduino code?</p>
<p>Any One have POV project Report please send to my mail id nrmr2222@gmail.com</p><p>please it's urgent......</p>
<p>Hi Amanda, and others, I was wondering if we can upload a code in this project that shows the analog clock or digital clock. ( A beginner in arduino coding ) . Btw I made this, it works great, I just don't know how to make these pics, I tried to record a video but, hmm. not working, I changed the value of the refreshrate but almost the same, any suggestions ??</p>
<p>Hi Amanda, this project is great!, indeed i chose to replicate it for a school project, we do have a laser cuter, also a CNC Router to cut it out, but I can't see the adobe document to cut the wand :(, Can you tell me where it is? please, if you have the .DXF file it will be great!! Thank you very much, and great job!!</p>
<p>superb, i'll be trying this as my first project</p>
<p>Hi Amanda, As I said I worked on your project and it worked, but the problem is I ve to wave the Wand very fast in order to make the Alphabets visible. I even tried changing the delay, not working so fine. Wld you suggest me whether to increase the delay or to decrease to make it more attractive. Thanks in Advance</p>
<p>Hi Amanda, </p><p>I used your code, but made some changes </p><p>- I drew some alien faces, ships, star etc...instead of just letters</p><p>- I used a Ardiuno Nano v3 </p><p>- Used just 19 LEDs ( no space for 20th LED on my Circuit board)</p><p><a href="http://amitjain1980.blogspot.in/2014/11/magic-wand-based-on-persistence-of.html" rel="nofollow">http://amitjain1980.blogspot.in/2014/11/magic-wand...</a></p><p>Thanks</p><p>Amit </p>
<p>so cool!</p>
<p>Finished product</p>
<p>Thanks, cool :)</p>
<p>just saw this, looks great!</p>
<p>Worked like a charm. Thanks. I saw a similar thing spinning but it was using rgb LEDs and could stream video. It was obviously bought but still pretty impressive.</p>
<p>nice! yeah this pov stuff can be taken pretty far. It'd be fun to adapt this project to rgb.</p>
<p>Thank you from France, Amanda.</p><p>I love your projects. Stay happy</p>
<p>thanks! looks awesome!</p>
At last, I am successful. It is really a great Instructable. Thankyou very much indeed.

About This Instructable

198,298 views

481 favorites

License:

Bio: I'm a grad student at the Center for Bits and Atoms at MIT Media Lab. Before that I worked at Instructables, writing code for ... More »
More by amandaghassaei: OTCA Metapixel - Conway's Game of Life "9 Degrees of Freedom" IMU Twitter Controlled Pet Feeder
Add instructable to: