Introduction: Simple Arduino POV Wand

About: Maker, Mechatronics Student, and amateur Graphic Designer.

Persistence of Vision or [POV] is an optical illusion whereby multiple discrete images blend into a single image in the human mind. I.e. when you look at a working fan, you'll see its blades forming a transparent circle! But, Why?!

The eye hold information for an instant longer than it's there and the brain merges those images together in one scene. This is because that the images we see take about tenth of a second to be registered in our brains, so when the blades move in a time less than tenth of a second, the brain combines the images of the different positions of the blades together and we start to see that circle.

See this video for further explanation.. https://www.youtube.com/watch?v=YismwdgMIRc

Step 1: Layout

In this instructable, I'm making an array of LEDs that displays letters and symbols in parts. As we move on, you'll understand it more and more. So, let's begin with the hardware.

The main steps are:

  • Required Tools
  • Wiring
  • Code

Step 2: Tools

  • 7 LEDs ( any color )
  • 7 Resistors (220 ohm)
  • Arduino UNO
  • Breadboard
  • 9v battery with battery holder
  • Zip tie
  • Jumpers
  • Staples
  • A camera ( with slow shutter speed )

Step 3: Wiring

#01:Put the Arduino and the breadboard back to back, then tie them together with the zip tie.

#02: Put the jumper wires between the arduino and the breadboard according to the order displayed in Image n.2

#03: [optional] Wire a 9v batterry to the Vin and GND terminals in the Arduino board to be able to use the project without the USB cable connected to your laptop.

Step 4: The Code

Before uploading this code to your Arduino, you can modify the message to display through the first two lines in the code. Just open the arduino sketch and change the message length and the message itself.

Customize your message, upload your code, then wave your wand in front of a camera set to a long shutter speed.

Step 5: How Does the Code Work?

The main idea of this code is to divide any input text input into characters, then divide each character into columns, then display the columns on a single column LED array with a short period of display time separating each column.

Assume that you're displaying the letter "S" on a 5x7 LED Matrix. You may describe the state of the LEDs in each column (from top to bottom) in binary like this:

Column1:[ Row1: LOW Row2: HIGH Row3: HIGH Row4: LOW Row5: LOW Row6: HIGH Row7: LOW ]

in short, Column1: LOW - HIGH - HIGH - LOW - LOW - HIGH -LOW or 0 1 1 0 0 1 0

and for the rest of columns it will be like this:

Column2: 1 0 0 1 0 0 1

Column3: 1 0 0 1 0 0 1

Column4: 1 0 0 1 0 0 1

Column5: 0 1 0 0 1 1 0

On the 7 LEDs, the code will display Column1 for about 8 milliseconds, then Column2, and so on.

You'll find some tips and comments in the code itself, just try to read it.

Thanks \ (u_u) /