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)  Macs9316 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)  Macs9316 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,

zvizvi19 days ago

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

rrace001 made it!2 months 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

unigamer3 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 unigamer3 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


kunal04 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
tomsv6 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!
sergiog19057 months ago
Hello, very nice project. It's awesome. I could see you wrote "I've attached the adobe illustrator and eps files of the wand and correct hole 0.1" hole spacing for the LEDs and resistors" but I only could find the code and .fz file. Woul you please help me where I find those files?
amandaghassaei (author)  sergiog19057 months ago
I looked for it and I just can't find it. sorry! it's not too hard though, just space the leds so they're next to each other. They need two holes each for their two leads, and the distance between the leads is 0.1"
AmirCyber7 months ago
It's so cool , and I loved it , I even used same color LED as yours :D
I made it with NANO v3.0
I should be able to see the text which LEDs make , with naked I , right ? but I don't, where could I went wrong ?
I have another problem , using USB or 9V battery both makes some part of Arduino very hot which burned my hand , I measured it and It was like ~70° C going up and a I had to disconnect the battery , where is the problem ?
amandaghassaei (author)  AmirCyber7 months ago
check that you haven't shorted the Vin or round pins somewhere - that might be causing the arduino to overheat.
can you post a video of what the leds look like when it's on?
-__- # my bad , I strapped Battery on back of the board, and it shorten some pins some how :D
now it's working nicely :D
arjavshah7 months ago
hi amanda, i wanted your opinion on what happens if i try to spin this same construction on a universal motor? will it work the same way as it does or it'll be a mess up? kindly advice. thanks.
amandaghassaei (author)  arjavshah7 months ago
you mean something like this?
it will work, you may want to change the value of the line
depending on the speed of your motor.
be nice! thanks a lot. I follow your tips step by step,and then it works!!!

thanks your sharing!!!
amandaghassaei (author)  Huan-Yang Chang7 months ago
glad to hear it!
oabzhanov8 months ago
hi thanks i did it and wrote OLZHAS question and atmega 328 taken and are connected directly to the power supply and LEDs without an adapter so you can Arduino
oabzhanov9 months ago
you can help write OLZHAS
amandaghassaei (author)  oabzhanov9 months ago
String povtext = "POV";//PUT YOUR MESSAGE HERE!!- must be in all caps, spaces are fine, no punctuation

change to:

String povtext = "OLZHAS";
oabzhanov9 months ago
hi i also collected but that that I did not get to the LEDs watch the video here
eyhseow10 months ago
I have tried using space between word but the program seen like cannot improve on viewing of the meaasge specially on the starting and the end word. Any way to improve the spacing of each word in the program.  Attached is video clip on the POV. Please advise. Thanks.
amandaghassaei (author)  eyhseow10 months ago
to change the amount of space at the beginning an end change the line:



delay(refreshrate*10); //increasing the number will increase the amount of space

in the following piece of code:

void loop() {
  //space at beginning of text
   PORTB = 0;
   PORTD = 0;
   PORTC = 0;
  for (n=0; n<dimtext; n++) {//go through each character of povtext and call function sendToWand to display letter
    if (povtext.charAt(n)=='A') {
    else if (povtext.charAt(n)=='B') {
    else if (povtext.charAt(n)=='C') {
    else if (povtext.charAt(n)=='D') {
    else if (povtext.charAt(n)=='E') {
    else if (povtext.charAt(n)=='F') {
    else if (povtext.charAt(n)=='G') {
    else if (povtext.charAt(n)=='H') {
    else if (povtext.charAt(n)=='I') {
    else if (povtext.charAt(n)=='J') {
    else if (povtext.charAt(n)=='K') {
    else if (povtext.charAt(n)=='L') {
    else if (povtext.charAt(n)=='M') {
    else if (povtext.charAt(n)=='N') {
    else if (povtext.charAt(n)=='O') {
    else if (povtext.charAt(n)=='P') {
    else if (povtext.charAt(n)=='Q') {
    else if (povtext.charAt(n)=='R') {
    else if (povtext.charAt(n)=='S') {
    else if (povtext.charAt(n)=='T') {
    else if (povtext.charAt(n)=='U') {
    else if (povtext.charAt(n)=='V') {
    else if (povtext.charAt(n)=='W') {
    else if (povtext.charAt(n)=='X') {
    else if (povtext.charAt(n)=='Y') {
    else if (povtext.charAt(n)=='Z') {
    else if (povtext.charAt(n)==' ') {
      PORTB = 0;
      PORTD = 0;
      PORTC = 0;
   delay(refreshrate*3);//off for 3 pixels
    //space between each character
    PORTB = 0;
    PORTD = 0;
    PORTC = 0;
  //space at end of text
   PORTB = 0;
   PORTD = 0;
   PORTC = 0;
Can I use an arduino UNO instead?
amandaghassaei (author)  equezada campos10 months ago
this is just a piece of protoboard, the shield fits nicely on the arduino, but you can use any perfboard/protoboard
Proton1711 months ago
Yes, as it seen in the video
amandaghassaei (author)  Proton1711 months ago
it's very strange, your leds are wired correctly since the startup thing work, try downloading the code again and reuploading
Proton1711 months ago
Yep, they all are on. It's nothing like part of leds lights, and part of them reflect light from others, may be it's not obvious in the video, but it is for me :) I've sent you the code in the private message, check your inbox! I guess something's not right with the code that i'm using
amandaghassaei (author)  Proton1711 months ago
are you using an arduino uno?
Proton1711 months ago
Got a problem with my, all leds lights together. Well, guess the video will explain it better than me: Scheme and code are the same. Tried various delay time for pixels to refresh, several different words next to "string povtext=" and the most i achived was getting them all blinking together (when delay time is about 2s). Has anyone faced this problem before? Not sure, but it feels that the problem could be with code...
amandaghassaei (author)  Proton1711 months ago
are you sure they are all on? try waving it quickly back and forth and look at your reflection in a window or mirror. can you post the code you've uploaded?
Aoshido12 months ago
I deleted a bunch of letters to see if it worked (Who needs the "Q" anyways? hahaah) And i had to delete QUITE a few of them.... so i started thinking, how about i just leave the letters that i need and it Kinda Worked!. I can leave like 13 Letters and it works. I said "Kinda" Because i cant wave it around much, cause my cables are quite short, and the severino plugged its eh.. bothersome to wave.... But! I could saw a liiiiittle "POV" so im guessing it works, wich leads me to my next question. Is there a way to make it stand alone? Like i make the PCB with JUST the ATMEGA8 and 9v, or do i need a Crystal, or to modify the ATMEGA8 Bootloader code? Thanks a lot!

(IM sorry i couldnt reply to my post, captcha wont show!:( )
amandaghassaei (author)  Aoshido12 months ago
I think you should be fine with just the atmega8 and 9v regulator. This code runs nowhere near 16mhz so I don't think the external clock is necessary. Let me know how it works out! And yes, I think the easiest solution to the memory problem is to remove unnecessary stored characters from the sketch.
Aoshido12 months ago
Aww its a great proyect!
I was about to ask if this could fit on the "Atmega8" But then i saw another response from you:
"not sure, the 168 has less memory so it might not fit all the characters I've stored in there. You should try uploading it and see what happens."
Im guessing if it might not fit in the atmega168 it will definably not fit in my lil Atmega8.
Still i tried it anyways (what can i lose) and i got this

c:/arduino-1.0.4/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: FYP1LVPH0OJ0IKJ.cpp.elf section .text will not fit in region text
c:/arduino-1.0.4/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: region text overflowed by 1452 bytes "

Im using the Arduino Severino V3 ( with an ATMEGA8
Any help in shrinking the code or making it fit somehow? ( I have no problems taking off a couple of leds!)
Thanks a lot
and what parts would i change if i just use 8 LEDs
amandaghassaei (author)  oldsmarracin1 year ago
this uses 7. if you want to use my code you will have to rewrite all the matrices that hold the letter shapes so that they are only eight pixels tall instead of 20 pixels tall.
torstenp161 year ago
Awesome! I'm kinda into photography, so I need to try this out.
I am going to add a simple tilt switch that will run it only when moved in one direction. :) Might also make a singe PCB with SMT components.
negi1 year ago
actually i didn't change anything... i used your code and schematics because the nano is just a smaller version of the uno...

the led´s are connected like this:

Top of wand
1 Digital Pin 13
2 Digital Pin 12
3 Digital Pin 11
4 Digital Pin 10
5 Digital Pin 9
6 Digital Pin 8
7 Digital Pin 7
8 Digital Pin 6
9 Digital Pin 5
10 Digital Pin 4
11 Digital Pin 3
12 Digital Pin 2
13 Digital Pin 1
14 Digital Pin 0
15 Analog Pin 5
16 Analog Pin 4
17 Analog Pin 3
18 Analog Pin 2
19 Analog Pin 1
20 Analog Pin 0
Bottom of wand

then i plugged my usb into my nano and uploaded your firmeware without a change, and it works like a charm

a friend of mine build his pov wand today so i will upload photos of his too :)

and the accelerometer: i orderd one some weeks ago from china, and maybe i/we will try it out...
amandaghassaei (author)  negi1 year ago
sweet, definitely let me know if you get it to work!
Ah, I've been having a busy couple of weeks so progress on this has paused, but now I'm back! I had been able to place the whole project on the nano like negi did with no change to the code. Other than that I haven't made any new advances. I was talking to a friend who also uses AVRs and he was telling me about the use of an interrupt to achieve the reversal when the reading from the accelerometer's Y-value exceeds a preset value. Would this be a good approach? In the mean time I'm going to see if I can use the pushbutton input to switch the direction on command if I can write the code in correctly. I really appreciate all of your help and guidance through this. I'll owe you a big one if it ends up working with these extra features! ^.^
amandaghassaei (author)  One1Asterisk1 year ago
using interrupts is overly complicated for this, have you tried adjusting the code the way I said? have you hooked up the accelerometer?
negi1 year ago
With an Arduino Nano V3 :)
amandaghassaei (author)  negi1 year ago
very cool! does it work?
oh yeah it does pretty well! but it took me 5 min´s and some photos to find the right speed and that i had to wave the pov wand from right to left :P
amandaghassaei (author)  negi1 year ago
also, do you think you can post your nano code and schematic? other people are asking for it. thanks!
amandaghassaei (author)  negi1 year ago
looks great! thanks for the pics! someone else in this thread had the idea of using an accelerometer to change the direction of scrolling, that way you could wave the wand back and forth without the words getting flipped, might be something worth checking out...
can u send me the abstract of persistence of vision band pls......
amandaghassaei (author)  manishrocker1 year ago
there is a download PDF button at the top of the page.
awbriones1 year ago
When you say .1" do you mean 1/10 of an inch, so all 20 LEDs would be in a 2 inch long line? Im a little bit confused about the spacing
amandaghassaei (author)  awbriones1 year ago
the 0.1" spacing is the distance between the two leads of one LED, you can space the leds however you like, but I'd recommend getting them to fit as close to each other as possible. probably ~0.25" apart.
For some reason, Safari doesn't like replying to comments and it won't show me the captcha. I'm going to start seeing if I can get the original code working on the nano by using the library commands like you suggested, but I wouldn't even know how to start adjusting the code to accept a pushbutton and multiple message strings, let alone how to make it reverse the code using signals from an accelerometer. Just scrolling through the code I think, if i had to guess, that this is maybe what would change depending on the signal from the accelerometer:

for (l=0; l<6; l++){ //for first six rows of data
data1 = data1 << 1;//bitwise shift left
data1 |= pgm_read_byte_near(letterArray + (l*12+t));//add next value from dataset

When changed it would be shifting to the right? I'm not sure, I can build any project put in front of me but when it comes to coding, I'm feeling my way around in the dark. I was terribly excited to figure out how to introduce new characters hahaha! I will try my hand at moving to the nano, and will let you know of my success or miserable failure soon enough. I'll put up some pictures of the build so far. I don't want to finalize it until I'm sure I can or can't add this extra functionality.
amandaghassaei (author)  One1Asterisk1 year ago
nice! yes let me know how the progress goes. You're really close with your idea of getting the direction to switch, the way you do it is by changing this line:

for (t=0; t<12; t++){ //for each time step
(this counts t up from 0 to 11)


for (t=11; t>=0; t--){ //for each time step
(this counts t down from 11 to 0)
its cool
Athebest1 year ago
I have a problem. Whenever I test the LED's with a simple blink sketch, the digital zero pin has a voltage. All the others work fine. I made sure it is unplugged from the computer and none of the leads are touching. I even take the shield off when uploading. Help?
amandaghassaei (author)  Athebest1 year ago
can you post the code you're using?
Wait, I figured it out. When ever the code starts up the RX pin has about 2 volts, but when the sketch starts it works fine. I was using the standard blink code found in examples. I actually just finished it and it looks awesome. It is going to be a great science fair project.
Okay, I found out what the issue was with adding additional characters, but now I wonder is this sketch compatible with the Arduino Nano? I know the nano has 2 extra analog pins so I think it has enough pins to run it all correctly, though I'm not sure how to adjust the code to do this. I was also toying around with the idea of moving it to a Mega and finding a way to store multiple messages and switching between them with a pushbutton. My 'holy grail' would be to find out how to attach an accelerometer to detect when the wand was being waved in the opposite direction so it could reverse the image and onlookers would only see the correct image as opposed to the mirror. Any insight as to how i might go about accomplishing this would be appreciated. Thanks!
amandaghassaei (author)  One1Asterisk1 year ago
should be pretty easy to switch to arduino nano, just ignore analog pins 6 and 7 when you wire it up. I think you may even be able to use the extra analog pins on the nano to add the extra functionality you want without having to use a mega. you can use one of the analog pins to control the switch, and the other to read accelerometer data (which btw is a fantastic idea!). I'd recommend starting with the arduino library code that I have commented out (you will have to comment out the existing code that contains the PORTB/PORTC/PORTD messages), get that code working on the uno, then switch over to the nano and make sure that works, then start adding in the switch/accelerometer. does that make sense? let me know how it goes!
I was trying to input my own characters and couldn't quite get it working for me. The build itself works fine, and the included code is working too, but when I try to make my own image, no character in the blank spot of the code works for me.

boolean letter(blank)[] PROGMEM = {

I'm probably doing it wrong, but short of replacing an already existing letter I've tried numbers, lower case letters, and a combination of capitalized letters to no avail. How might I solve this one?
Athebest1 year ago
How do you download the fritzing document. When I try, it comes up with some weird XML document tree. I have the software but can't seem to download it. BTW, I am building this as my 8th grade science fair project and I really like how you did this.
amandaghassaei (author)  Athebest1 year ago
weird, try rt click + "save link as"
x2borg1 year ago
Nice code amanda !!! Can Is it big problem to make this code on only 7 leds ?
amandaghassaei (author)  x2borg1 year ago
yes, but you will have to redo the arrays that hold the letter data- they are designed for 20leds.
DoctorWoo1 year ago
Great idea! But I do have one quick question concerning coding the video, you were removing the shield when you would recode the arduino. I plan to make this, but a bit cheaper and more permanent (in the sense that an arduino is in there for good) but I'm still a bit new to the arduino coding scene. Is there a reason you were taking the shield off..?
You can't upload programs on the arduino if you have the shield on it. IDK why.
amandaghassaei (author)  gatorpatch1 year ago
If you have stuff connected to rx and tx(pins 0 and 1), sometimes you cannot load code onto the board
Just pins 1 and 2? so could you hypothetically just disconnect the wires to pin 1 and 2 and code it with wires in all other ports?
amandaghassaei (author)  DoctorWoo1 year ago
pins 0 and 1, yes that would work
Awesome! And I'm not too sure why I said 1/2...thanks!
Odd. i will have to look into my design then. thanks!
gatorpatch1 year ago
this is my first real arduino project. Just got this photo
amandaghassaei (author)  gatorpatch1 year ago
Looks great! Thanks for posting those pics!
Sorry double pic
davidheld1 year ago
Where can I locate the EPS file for spacing? I am having a Tinkering class build this project. TIA.
amandaghassaei (author)  davidheld1 year ago
I made this a while ago and I seem to have misplaced the files.  Just laser cut a long strip with 20 pairs of holes spaced 0.1" apart.  sorry about this!
charrison91 year ago
okay, so i can upload the sketch and nothing seems to be out of place, which means that i am missing something. when i flip the switch the board lights up and looks like it's working but nothing is getting to the LED's. i know that's not much to go off of but what or where should i check, or how can i test to see where the problem is
amandaghassaei (author)  charrison91 year ago
the leds aren't lighting up at all?
tdk41 year ago
This is an awesome Step-By-Step tutorial :D Given the detailed explanation :D

I Have UNO R3 and I made a circuit like yours but with 6 leds only ( Only the first half of the characters will appear) But I don't know .. should I move it too fast or smoothly or what :( Nothing appears here :(

Thanks in advance anyways :D
tdk4 tdk41 year ago
Now I have 11 leds and they work properly .. thanks :D
so the main idea is like led matrix but with a one column led matrix and I simulate the rest with the movement ??

Thanks loads ... you're Epic :D
amandaghassaei (author)  tdk41 year ago
yes that is the idea! are you going to get the rest of the leds to finish it?
Thanks for the reply :D
Yes & Once I bring all the leds and make the wand full I'll give u feedback ... a good one I hope :D

can I use bright blue leds .. or it won't be a good idea? I'm using currently very bright blue leds but only 2 characters appear from the word "AHMED".
Is it something wrong with the leds or with how I move the wand?
amandaghassaei (author)  tdk41 year ago
sometimes it's hard to see all the characters at once, try looking at the reflection of the wand in a dark window and stand back a it from the window. Or try taking a long exposure photograph like the ones I have in this instructable. As long as the only thing you changed in the arduino code is the message, all the characters should work fine. any LEDs work fine, can't wait to see it! definitely reply with a pic!

here's a link for the video .. It's awesome :D

btw did you try to use bit manipulation to have array of bytes or int instead of having an array of boolean? Or it'll introduce a delay which may affect the pov? If you didn't try it let me know so I give it a try :)

Thanks in advance
amandaghassaei (author)  tdk41 year ago
looks great! yes you can store the letters in an array of bytes or ints and use bit manipulation to parse through them. I did it this way bc I'd thought it would be easier for other people to understand and edit.
I'd love to see what you do with it! keep posting!
Yes it's easier for us to understand & you should keep that code posted this way, it's well documented & easy to read. I'll just try to play with the code a little bit ... I just love that :D I have midterms this week so I guess next week I'll start posting other versions of the code :)

Thanks again & Good Luck :D
tdk4 tdk41 year ago
sorry for being late :D but here's a code for the magic wand using bits.

Besides in this case you can control more than 20 led using cascaded "74hc595"
arleibr1 year ago
I was really thanks to outdated version of arduino.
arleibr1 year ago
when I'll upload the firmware POV wand to arduino.
of an error: error: 'String' does not name a type In function 'void loop ()':
what to do to resolve this error, I do not understand programming.
amandaghassaei (author)  arleibr1 year ago
did you copy it exactly as I wrote it?
amandaghassaei (author)  amandaghassaei1 year ago
also do you have the latest version of arduino?
Athebest1 year ago
Is this the NTE54-140 from Radioshack?
amandaghassaei (author)  Athebest1 year ago
rohit4001 year ago
Hi! Amanda. Great Project. i am just getting into the whole micro-controller and the arduino scene. and i was wondering, how i can modify the code given to suit a arduino mega r2. im still planning on using the 20 leds.
And is there a program that lets you create the Alphabet's Bit Maps instead of manually writing each bit?
amandaghassaei (author)  rohit4001 year ago
thanks, yes you could easily get this to work on a mega.  Here is a diagram showing the associated ports for all of the Mega's pins.  In my code I sent data to ports b (digital pins 8-13), d (digital pins 0-7), and c (analog pins 0-5).  On the mega I would recommend using ports a, c, and l.  so change the pin connections as follows (the first column is what I have, the second is the mega connection):

d13   d27
d12   d26
d11   d25
d10   d24
d9     d23
d8     d22
d7     d30
d6     d31
d5     d32
d4     d33
d3     d34
d2     d35
d1     d36
d0     d37
a5     d44
a4     d45
a3     d46
a2     d47
a1     d48
a0     d49

then change all instances of "PORTB" to "PORTA", "PORTD" to "PORTC" and "PORTC" to "PORTL"

let me know how that works!
Hi Amanada!

You are awesome! i have yet to try your solution because i need a few more parts, but the fact that you replied so fast was just awesome.

and Love the contest you are hosting.

amandaghassaei (author)  rohit4001 year ago
glad to hear it!
geoffb371 year ago
how do i change the program to suit 15 led's instead of 20????
amandaghassaei (author)  geoffb371 year ago
you're going to have to rewrite all the letter storage arrays so that they are only 15 bits tall. For example the letter x is stored in the following array:

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,
0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0,
0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0,
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
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, 0, 1, 1, 1, 1, 1, 1, 0, 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, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0,
0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0,
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,

it is a 12x20 bit array, you need to get its height down to 15. then you can send the data to all the digital pins (14 pins total) and one of the analog pins. does that make sense? if you take a stab at it and post you code I can help you more!
iceng1 year ago
Cool and Nice photo.

bernie3081 year ago
That's really cool! Do you think the code would run on an ATMega168a??
amandaghassaei (author)  bernie3081 year ago
not sure, the 168 has less memory so it might not fit all the characters I've stored in there. You should try uploading it and see what happens.
bigboom3781 year ago
epic, i have always wanted to do a pov but i never had enough led's
csergi1 year ago
nice, if you command a big leds you can mount it in a big wheel with the name of local or bar ,or other and you'll sell much
Jayefuu1 year ago

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!