Arduino controlled POV Display

So, I’ve graduated. I am single. I have nothing else to do at home except eat, sleep, watch movies and check facebook. Then I come up across this awesome blog by Carlos Asmat which has a lot of interesting stuff. There I find a simple project based on using Persistence of Vision (POV) to create a display (2D) using an LED strip (1D). So I decide ‘Lets do it’ and what goes below is my first attempt at replicating that display. It is still very crude and requires polishing, but well its a start.

Here is a list of parts that went into the making of it:

  1. Arduino Uno (or any Arduino for that matter, as long as it has 11 or more digital I/O pins)
  2. CPU Fan (You can find it in any electronics store). The one I have is rated 12V/0.25 mA.
  3. 9V Batteries
  4. LED’s (whichever color suits).
  5. Connectors
  6. IR Transmitter (I used TSUS4400 from Vishay. You can find it on element 14 here.)
  7. IR Receiver  (I used TEFT4300 from Vishay. You can find it here)
  8. 220E resistors (for LED’s and IR Transmitter)
  9. 1K8 resistor for IR Receiver
  10. 7805 voltage regulator (for giving 5V continuously to IR transmitter. Not needed if you have a 5V or 3.3V battery)
  11. Bergsticks
  12. Some kind of glue (I used Fevistick)


Well, you can refer this page and construct the platform. Its very easy and you dont really need any expertise. Also, not to mention, I am pretty lazy to get into each and every detail.


Again, this is very well documented by Carlos Asmat on his page. He clearly explains using the working a 1D LED strip for 2D display patterns. The basis behind my model is the same, although I’ve made two major software changes:

  1. With Carlos’ version, you need to use an additional variable ‘timer3’ which can be adjusted to get a stable display. I started out with this but soon realized that it was tough to modify the value of that variable because it’s all trial-and-error. Even if you luckily get a value of timer3 for which the text, say “KARAN”, is visibly stable, you will still need to change its value if you change the number of alphabets in a text, or the delay between different columns, or the delay between different frames. This is because you want the letters ‘K’, ‘A’, ‘R’, ‘A’, ‘N’ to be displayed at the same position to make the text look stable. This is not possible if the parameter’s I mentioned are changed. So I, after surfing around, found a strategy which used an IR Transmitter Receiver pair to mark the ‘home’ location.The blue colored component is the IR Transmitter. It is constantly powered using 5V supply. The (black colored) IR Receiver is powered from the Arduino and its value is checked after one drawing (“KARAN”) is displayed. Once it is triggered by the transmitter, then the arduino again displays the drawing. As a result, the drawing is stable. As long as the speed of rotation is sufficiently fast, you should clearly see the text without any impairment.
  2. Another change is that I have not used a data array for an entire drawing. Instead I have defined bitmap patterns for various alphabets and symbols and used a function show()which displays each frame/alphabet/symbol. This makes the use more flexible.You can find my arduino code for the display here.

Explanation of the code:

The LED’s which are used for displaying the text are connected from pin 2 to pin 9. There are additionally two LED’s connected to pins 12 & 13. They are used as borders for the text and are optional. You can choose to forget about them.

The IR Receiver is powered from pin 11 of the Arduino. Its output is taken from pin 10.

The  bitmap pattern for alphabets and some symbols are  passed to the show() function which systematically displays each column of the text bitmap pattern. You can choose timer1, timer2 values as and how it suits you. I have used the ones which worked perfect for me. The frame length can also be changed. However I preferred to deal with a 8 x 8 square matrix which was easy.

You might think why have I called the functions in a reverse order, i.e. show(N) then show(A), then show(R), then show(A), then show(K). This is because my fan was rotating in the anti-clockwise direction. You can imagine the logic for a second here.

In the end there is a loop

while(digitalRead(10) != 1)



which stops the display until the ‘home’ location is read by the IR Receiver.

The rest of the code is pretty straightforward.

Here are some pictures of my assembly:

This slideshow requires JavaScript.

Drawback: A big drawback of this is that the CPU fan that I have used is not capable of bearing the load of the rotating arm (LED strip + Arduino + Battery) which results in a drastic reduction in the speed of the fan (which normally is 3800 rpm). This tend to distort the text that I am trying to display. This is a reason why I havent included a video of the working model. So currently I am looking for something fast with moderate torque. Once I have it, I’ll post a video which demonstrates the working model. This is the video. I must warn you that it is very very premature but just to show that it works, here it is:

Well, thats the end of it. You can do-it-yourself. Its pretty easy. Took me only 2 days to get it going and that too because I was very lazy. You can probably do it in 14-16 hours, if you can go on for that stretch of a time. If there are any doubts you have about the explanation, code or anything, please leave a comment and I’ll try to see that it gets resolved to the best of my ability.

Peace out \m/

click tracking


25 thoughts on “Arduino controlled POV Display

    • Ofcourse you can, Chris. I originally set out to do the same thing. But it turned out that it wasnt that easy. So I figured I’d do something else with it. But you can go ahead and give it a try (and leave a comment here when you do it 😉 )

  1. R K Bose says:

    I’m a little confused about the connections of the IR receiver to the Arduino, will it be possible for you to post the schematic, or else mail it at
    Many thanks Mr.Thakkar


  2. parth says:

    same condition i have occurs i am also confuse with IR receiver pin so can u tell me in your program which pin connected with IR receiver ..

  3. VinVin says:

    Hai, i am interesting with your project. Can u send me your schematic ? I am very sure about the connection. Thank you.

  4. Yogesh Kumar says:

    Hi Karan
    I’m really confused how to connect ir receiver with arduino and a resistor!
    can u send me schematic of this pov to
    coz I’m doin this as my project and have only a week left to submit my project
    hoping a soon reply
    any help would be appreciated!
    thanks in advance

  5. Manas says:

    Bro, I don’t know you are active on the forum or not but still….
    Use Arduino nano, instead of searching for a faster rotating body, you can just reduce the weight off the board. I will post my video once I am done with the project.
    Thanks for your help buddy. 🙂

Comments anyone? Huh? huh? huh?

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s