The first time I saw a POV (Persistence Of Vision) display was on a show called FAQ on TV. The POV display consisted of an oscillating shaft with 6 LED's mounted on the end of the shaft.

Since then I have always wanted to make one myself, I tried making one about 2 months ago with an oscillating shaft myself but I was not successful as the speed of the shaft was too low for the POV display to work. Now I decided to make the POV display with just a DC Motor instead of an oscillating shaft as they are much cheaper and easily available compared to the shafts.

In this instructable I will show you how to make the POV Display yourself!

This is a very simple project both on hardware and software (coding) areas. It costed me only about 5$ to make it from start to finish!

So lets get started!

Here is a video of it in action!

Note: The brightening and dimming of the LEDs in the video is due to my crappy camera, in reality its consistent and quite bright.

Step 1: Persistence Of Vision and how it works

POV stands for Persistence Of VIsion.

Persistence Of Vision is the phenomenon of the eye by which an image seen by our eye persists for about 0.04s during which any other images that we see are merged together with this image.

This phenomenon is used in the POV Display as we turn the LEDs on and off in such a way that the different images overlap each other forming letters.

For example:

The formation of the letter E with 5 LEDs;

1 2 3 <- Time

1 1 1 <- Bulb 1

1 0 0 <- Bulb 2

1 1 1 <- Bulb 3

1 0 0 <- Bulb 4

1 1 1 <- Bulb 5

Each column represents the 5 LEDs we used to make the display. Each element in the row represents the state of the LED at that given time.

So at t = 1 Bulb 1,2,3,4,5 are all on

at t=2,3 Bulb 1,3,5 are on

This way we can visually see the letter E formed by the LEDs but the time interval would be very small in milliseconds and not as given in the example.

Due to the short time intervals and the ability of the LEDs to turn on and off very quickly we can see the letter E as all the 3 images merge. As the motor is spinning, as time passes the LEDs move from one position to the next so all these images are merged together.

For more information on how this works have a look at these links:

Note: You can see in the above images how the 3 different pictures merge to form the letter E

Here is an animated gif that shows the formation of the letter E :http://www.instructables.com/files/orig/FIZ/ZDS5/HW4OQXU8/FIZZDS5HW4OQXU8.gif

<p>Very nice tutorial, I do like but I have a little problem</p><p>I'm not sure if I have soldering it right, right pin to right LED.</p><p>The light is on light is on but I can't see any letters</p><p>I have change delayTime and charBreak</p><p>I have even change the power to the fan that I use</p><p>when I want it to write &quot;o&quot; I get this??</p>
<p>I had the same problem and tried the same things buuut.....it's the pin assignment to in the sketch which is wrong. Change it accordingly. The sketch pin assignment does not correspond to the schematic actual connections.</p>
<p>Can you tell how you connected LEDs to ATtiny85 <br>LED 1 being the outermost LED ,please let me know how should i connect to get desired output.</p>
mm I did notice that so now my works greate ;)
<p>Hello vishalapr and everyone else...<br>I took the liberty and wrote an <br>odt-excel sheet with the 5x5 font and the weight for faster <br>understanding of everyone reading your instructuble. Great one and <br>really enjoyable ... thanks.<br>I also included a basic set of numbers with the codes for everyone interested.<br>I hope it helps :)</p><p>the link below now works! :)</p><p><a href="https://www.dropbox.com/s/jd0bmqv35jm54jk/font_spec_5x5.ods?dl=0" rel="nofollow">https://www.dropbox.com/s/jd0bmqv35jm54jk/font_spe...</a></p>
<p>great instructable my friend!!!and very thorough explanation of the code!!!!!but i faced a problem trying to make it:/ i cannot seem to male H appear correctly.and by correctly i mean the medium line.the two verticals are ok but the horizontal one does not appear.the same problem appears with E too...Please help??? Thanks a lot</p>
<p>I made a PCB using Fritzing. Here is link : https://github.com/B45i/ATtiny85-45-POV-display</p>
<p>a great instructable. however, i have a few questions..</p><p>first is that.. is there any substitute for the ATtiny85? if yes, what changes would i require to make in the code and the circuit?</p><p>and my second question be.. the arduino board shown here has &quot;digital&quot; written near its pins, while mine has &quot;analog&quot; written, what changes do i need to make to the code and the circuit.</p><p>please help. thank you.</p>
<p>Arduino has both digital and analog pins. to program attiny85 you need digital pins 10,11,12,13 and and +5,GND analog pins to power it.</p><p>Connect the Arduino to the ATtiny as follows:</p><ul><br><li>Arduino +5V ---&gt; ATtiny Pin 8<li>Arduino Ground ---&gt; ATtiny Pin 4<li>Arduino Pin 10 ---&gt; ATtiny Pin 1<li>Arduino Pin 11 ---&gt; ATtiny Pin 5<li>Arduino Pin 12 ---&gt; ATtiny Pin 6<li>Arduino Pin 13 ---&gt; ATtiny Pin 7</ul>
are u from india?<br>coz im having some trouble get the components<br>
<p>If you are talking about the ATtint85, you can get it from evelta.com . <a href="http://www.evelta.com/semiconductors-and-actives/microcontrollers/attiny85-20pu" rel="nofollow">http://www.evelta.com/semiconductors-and-actives/m...</a></p>
<p>Very cool! I used &quot;<a href="http://www.instructables.com/member/ahmedebeed555" style="">ahmedebeed555</a>&quot;'s hand swing idea and attached a string to the Altoid tin. The larger circle allows more characters. I changed the code a little. All of those &quot;if&quot; statements became a &quot;switch-case&quot; setup. It only saves ~0.5Kb in the code. For that amount of variables, &quot;switch-case&quot; should be faster. Diffusing the LEDs with sandpaper is a great idea-- &quot;why didn't I think of that&quot;-- kind of great idea! I used to use a drop of superglue and sprinkle with baking soda-- messy. Somehow I soldered the pins in a mangled order. I duplicated the picture on the instructions-- confusing. I just changed the programming rather than rewire. Works like a charm! Thanks for my first ATTiny85 experience!</p><p>int LED1 = 2;</p><p>int LED2 = 1;</p><p>int LED3 = 0;</p><p>int LED4 = 4;</p><p>int LED5 = 3;</p>
<p>Found a couple of glitches in the code I changed. </p><p>Line 66 should read:</p><p>&quot;case'c': for (int i = 0; i &lt;5; i++){displayLine(c2[i]);delay(delayTime);}break;&quot;</p><p>and it's easier to &quot;delay(250)&quot; rather than &quot;delay(100)&quot; on line 109</p>
<p>I've see another of this project on Instructables. I love Attiny85.</p><p>Very awesome project! I know the principle POV, but I never seen something like this. Simple and functionally. For the speed it's possible add a potentiometer, but the Attiny not have another pin for the input... Tomorrow I make one of this. Great! Thank!</p>
<p>Made it with an attiny85. Can anyone tell me how to make a CLOCK out of it? Just Digital numbers displaying the current time?</p>
<p>Hi Martin, what resistors did you use with your LED setup? In the tutorial no resistors were specified except for on the USB cord. I'm wary of using LEDs without resistors because I don't want them to blow out.</p><p>Any help would be appreciated. Thanks !! </p>
<p>Well... its a 3V Battery so i used about 50 to 100 OHMs.<br>surplus Voltage / allowed Amperes = Resistance<br>1V/0,02 = 50 OHM<br>Depends on LEDs used.</p>
<p>Hi there, any way you could show us how the process would be modified if were to increase the LEDs and use an Arduino Uno? I'm an Arduino beginner and have been learning mostly off of an Arduino Uno. Also the project I have in mind requires more than 10 characters per display. Thanks so much!</p>
<p>Oops my bad--just saw that the Arduino Uno is in fact used here. I guess then would you be able to elaborate on how to program the font for 10 LEDs rather than 5? Thanks so much!!</p>
<p>Good documention !! Beatifull !!</p>
Till now the most understandable instructable I have read.... Great job
wonder if you can make a clock out of it
<p>You could, but you have to synchronise perfectly the motor with the display, so you display the bar in an &quot;RISING&quot; interrupt triggered by an infrared sensor pointing to a white wheel with at least 60 &quot;stokes&quot; drawn on it (1 per sector-pixel). ATMega8 seems a minimum, there...</p>
<p>Yea you can but Im not sure about the coding for it, will spend some more time learning and then Ill try make one! :D</p>
please can you send me a code to my email address rajatnegi108@gmail.com
<p>When I click uplode, </p><p>avrdude stk500_getsync not in sync resp 0x00</p><p>this pops up, any ideas to help? its fully assembled and all the connections are correct. All of the software was also downloaded successfully.</p>
<p>Not sure if you got the issue straightened out or not, but you can try this: Check to make sure you've selected the correct COM Port and also check to see if you've selected the correct board you are using. To check, look at the top of the Arduino IDE and select Tools&gt;Board and toggle the appropriate board. Do the same for your COM Port Tools&gt;Port. Hope that helps.</p>
<p>Excellent Instructable, really well laid out and explained, plus you have used many recycled parts, this will give people the inspiration to make these themselves, well done Regards Doc Cox</p>
<p>Hey! First of all, fantastic work on this. Your project has inspired one of my own creations for a school project and I've followed it step by step carefully, soldering is good, anodes with anodes and cathodes with cathodes, everything where it should be. I've used the exact same code, but I'm using an ATTiny 45 instead of an 85 and I do not know if that makes much of difference because it seems not to light up. I would so appreciate if you could reply to this comment, it would mean a lot. </p>
<p>i had tried alot but its not giving me my original word plz can u help me in making this .</p>
<p>Awesome Instructable! Also, aren't ATtinys just awesome?!? :-)</p>
<p>ATtinys are the best mainly because they are cheap and they use the arduino code itself!</p>
<p>ATMega8 are cheap too, you can get them for about 60-80c each, they accept &quot;native&quot; Arduino code at 16MHz and can be programmed on a simple breadboard (or taken from a 1st-generation Arduino)</p>
<p>Very useful! Love that you explained some code in the end. </p>
<p>Hi <a href="http://www.instructables.com/member/vishalapr/" rel="nofollow">vishalapr</a>,</p><p>Thank you for this amazing instructable. Inspired from you, I made a RGB POV :)</p><p>I have also made aan instructable for it too.</p><p>http://www.instructables.com/id/RGB-POV-Display/</p>
<p>Congratulation :)</p>
<p>Thank you! :D</p>
<p>Had enough parts to knock one together. Need a faster motor as the digits are stretched on this one.</p>
<p>It looks great! Yea I had to adjust the speed of my motor to get them just right.</p>
<p>Thanks is very interressing instructable</p>
<p>HI, thanks for idea. I made this project on arduino pro mini. </p><p><a href="http://techfreak.pl/weekendowy-projekt-pov-arduino-mini-pro/" rel="nofollow">http://techfreak.pl/weekendowy-projekt-pov-arduino...</a></p>
<p>That looks awesome! Great job!</p>
<p>Hand swing POV</p><p><a href="http://www.instructables.com/id/Cheap-16F84-POV-Message-AirText/" rel="nofollow">http://www.instructables.com/id/Cheap-16F84-POV-Me...</a></p>
<p>Thank you for sharing. Great instructable.</p>
<p>Wow that looks very nice and compact! Glad you liked the ible!</p><p>Thanks for the pics!!</p>
<p>Looks like a great way to make my own one of these. <a href="http://www.xoxide.com/cooljag-pro-led-flash-120mmfan.html" rel="nofollow">http://www.xoxide.com/cooljag-pro-led-flash-120mmf...</a></p><p>Same circuitry can be put in many size fans.</p>
<p>Thanks! Yea you can use it with fans instead of attaching a motor seperately.</p>

About This Instructable




Bio: A programming enthusiast. I tinker around with everything I see and love to game.
More by vishalapr:Diffused Glue Stick Lamp ATtiny85 POV Display Artoo [R2] (ATtiny2313 Wall Avoiding Robot) 
Add instructable to: