Persistence of Vision (PoV) Display Using Arduino




Introduction: Persistence of Vision (PoV) Display Using Arduino

About: STEMpedia is a place bringing project-making tools at one place- kits, online courses, coding platforms, controller app and tons of free learning resources.

Time for a fun-filled, easy-peasy Japan-easy to make a project! Today, we’re going to show you how to make an LED POV Display. POV, an acronym for the persistence of vision, is a kind of optical illusion in which a visual image seems to persist even when the light from it ceases to enter our eyes and this makes it super cool! You can display any text or image that you want to in the display.

Sounds awesome, right? So, why are you still here?! Let’s begin right away!

Step 1: List of Components Needed


  • evive
  • Arduino Nano
  • IR Sensor
  • General Purpose Board
  • LEDs
  • Resistors
  • DC Motor
  • Battery
  • Wires
  • Glue Gun
  • Soldering Iron
  • White Paper
  • Some 3D Printed Parts


  • Arduino IDE

Step 2: Understanding Some Basic Concepts

What is Persistence of Vision?

Persistence of Vision, or POV, occurs when a visual image seems to persist continuously when a stream of light is repeatedly interrupted for very brief instances and does not enter our eyes during those durations.

How does the Persistence of Vision works?

The human eye cannot process more than 10-12 images per second. When a series of images more is presented in quick succession, it gives us the illusion that the images are in motion.

This is the basic principle behind the making of the animated movies.

Step 3: Printing the 3D Printed Part

Here we are going to 3D Print the holder to which we will be fixing our complete assembly. Download the .STL given below.

The Holder consists of two parts.

  1. The Rotating Part
  2. The Stable Part

Step 4: Assembling the LEDs

Once you have the 3D Printed parts with you, its time to start the making.

Take the General Purpose Board and cut it in the size that fits the Rotating part.

Once done, its time to add the LEDs.

In this project, I have used 8 red LEDs, you can use as many and of any color you want.

Once done, short (common) the cathode terminal of all the LEDs by soldering them on the GPB.

Add resistors to protect the LEDs from blowing up due to high voltage supply (5V). I have used the 220ohm resistors. Solder one end of each resistor to the anode terminal or positive leg of each LED.

Solder jumper cables to the second leg of each resistor.

Step 5: Connection With Arduino Nano

Connect all the LEDs to Arduino Nano as given below:

  • LED0: D2 of nano
  • LED1: D3 of nano
  • LED2: D4 of nano
  • LED3: D5 of nano
  • LED4: D6 of nano
  • LED5: D7 of nano
  • LED6: D8 of nano
  • LED7: D9 of nano
  • Common cathode: Ground of nano

Step 6: Attaching the DC Motor

Attach the DC Motor to the given space in the holder.

Power the DC Motor using evive.

Step 7: Adding IR Sensor

It's time to add the IR Sensor.

As we need to indicate the beginning from where the text should be written. Attach a small piece of white paper to the steady assembly, which will be detected by the IR Sensor.

Varying the place of the paper leads to a change in the position of the text displayed.

Connect it to Nano:

  • GND: GND of nano
  • Vin: 5v of nano
  • Out: D10 of nano

Step 8: Completing the Assembly.

We need to power up the Nano. For that, connect the battery to it.

Once done, fix the Nano into the Rotating Part.

Fasten the Rotating Part to the holder.

Step 9: Arduino Code

Upload the following code to Arduino Nano:

Step 10: Working

When the IR sensor detects the white paper, the LEDs start glowing and create the illusion that something is displayed by the LED. This is due to the persistence of vision, where the LEDs turn on and off in such a way that the different images overlap each other forming letters.

Step 11: Conclusion

With this, your very own LED POV Display is all set to display the message of your choice!

Arduino Contest 2019

Participated in the
Arduino Contest 2019

1 Person Made This Project!


  • Raspberry Pi Contest

    Raspberry Pi Contest
  • New Year, New Skill Student Design Challenge

    New Year, New Skill Student Design Challenge
  • One Board Contest

    One Board Contest



18 days ago

having an issue seems to run to fast for the sensor... ?? any suggestions?


1 year ago

If i want to increase the number of led s to 50 how should i change the arrays . Thanks in advance


2 years ago

What should be the rpm of the motor used here?


Reply 2 years ago

The DC Motor that is being used here is the one that you get in the generic BO Motor. If you take out the plastic covering, you will be left with this motor.

Happy DIYing :)


Question 2 years ago

I would love to make this for my grandson but I don't have a printer to make the two pieces necessary. Is there any way I can purchase them? Have someone print them for me (I'd pay, of course)?


Question 2 years ago on Step 5

Hi. I built this and although it seems to work, I cannot distinguish any characters when I look at it. Is LED0 supposed to be the led closest to the motor? Also wondering if the motor I’m using is not fast enough (it spins at 250 rpm). Thanks again for posting the was fun to build.


Answer 2 years ago

Thank you for your kind words. Try increasing the rpm as to have the illusion the rotation needs to be at least more than 10-12 turns per second. Also, do not keep the LED0 near the motor. Hope you find this useful. :)


2 years ago

Hi, good project.
If I want to separate the led's, to enlarge de words, the effect is the same?


Reply 2 years ago

The effect might not be the same. You can try increasing the LEDs at the same time.