Introduction: Simple POV Homemade Arduino Shield

Picture of Simple POV Homemade Arduino Shield

Has Gunnery Sergeant Hartman (Full Metal Jacket) says during the riffle pray “There are many like it, but this one is mine”

Step 1: Material

Indeed there is many project like available on internet.

This one use a tilt switch as trigger

1 x Arduino board (
7 x 500 ohms resitors ¼ W
7 x basic red leds
1 x 10 k ohms resitors ¼ W
1 x tilt switch (I use this one
A piece of prototyping board plated holes
Male header (0,1") 1 row, 40 pins (need only 28 for complet arduino connexion , and realy need 10 for this project)


A PC to program the arduino
An soldering iron
Some tin
A cutter

Step 2: Prepare the Board

You have to cut the board to get a piece of about 21 x 18 holes (the hole spacing is 2,54 mm)
For this kind of board, just score with a sharp knife, place a metal ruler or similar on the top and snap it.

Then you have to solder the Male header.
First cut the male header in
2 pieces of 8 pins
2 pieces of 6 pins

Then, solder the Male header. Take care of the two 8 pins. They must be tilted to fit the arduino connectors. First, make a try with a single soldering point.

You can find instructable of this here =>

and here

Step 3: Solder the Electronics Parts

Picture of Solder the Electronics Parts

Solder the 500 ohms resistors. They must be connected to the male header of the arduino pin 6 to 12

Solder the leds. The “upper” leds must be on the pin 6

Solder the tilt switch and the 10 kohms resistor.

With my tilt switch, I’m using only two pins (see picture)

Add some jumper wire… and finally it should looks like the last picture

Step 4: The Code

You can tune these parameters

If you use deferent pin for your leds or for your sensor
#define led1 6
#define led2 7
#define led3 8
#define led4 9
#define led5 10
#define led6 11
#define led7 12
#define sensorPin 2

Currently this code display two message : “SNOOTLAB” and “RULEZ”

The two messages are define in
char texte[] = "SNOOTLAB"; // data to write on startup
char texte2[] = "RULEZ"; // data to write after "repet" writing of the first message

The message changes after 10 displays. You can change this value here
#define repet 10 //number of repetition before changing message

Step 5: Enjoy

Picture of Enjoy

I think there is many way to improve this, by using interruption for example. For this purpose, I have connected the sensor on the pin 2 of the arduino of the external interruption.
If you made a think like this, please post this upgrade on instructable.


bhawick55 (author)2015-02-01

If i am using a Hall Effect sensor, then do i need to change the code for sensor?

Means how it triggers the change and the time delay?

bhawick55 (author)2015-01-22

Hi Phil,,,, you did an excellent work...i want to try the same thing, but want to build it on a rotating base. Can you please guide me what changes i might need to do in the program?

tempteta (author)bhawick552015-01-23

Hi bhawick55

Thank you for your comment

For a rotating base, I
think this code can work without modification. The main modification is on the hardware part

The tilt sensor can’t work
on a rotating base because the centrifuge force will “stick” the ball in the
tilt sensor

The way to do that is an
optical sensor, a REEL sensor or a hall effect sensor

You can find some inspiration
on this project è


bhawick55 (author)tempteta2015-01-25

Thank you for your feedback, i will try to do it using a hall effect sensor, will let you know how it works.

tchatow (author)2014-10-12

I built this project (on a breadboard for testing), and have come across two problems. 1. The led on pin 12 doesn't light up (I have checked that it works, and it works on the same pin in a different program). 2. I have tried changing the settings, but I can't get the text to show up, like it does in the video. I'm using an UNO, not a Duemilanove, if that makes any difference

tempteta (author)tchatow2014-10-13

Hi, thank you for your
interest for my project.

Can you send me a picture
of your breadbord ?

About the arduino UNO or
Duemilanove, I don't think it is important.

The code doesn’t use any
uno or duemilanove specific function

About the led on the 12
pin, this led is use with some char (like _, @ , j,...) but most of them doesn’t
need the led on the pin 12.

Take a look in the file
font7x5.h. The char using the led 12 are like this one

//106 j








If the last
line have some “1” the led 12 will lit

You can found here an example of this setup on breadbord ==>

veersingh06 (author)2014-05-15

hello author

i am little bit confuse because you zip shows error

so please help me

tempteta (author)veersingh062014-05-15


What do you call error ?
Error to download, ?
Error to unzip ?
Error in the Arduino IDE ?
What is the error message ?


nikhil04arora (author)2014-04-10

hello author,

I really liked this project.

I tried running this code and got the following errors. Can you please tell me what changes are to be made.
Thanks in advance.

sketch_apr10a.ino:6:21: error: font7x5.h: No such file or directory

sketch_apr10a.ino: In function 'void displayChar(char)':

sketch_apr10a:97: error: 'charbook' was not declared in this scope

tempteta (author)nikhil04arora2014-04-10

In the file you have two files : font7x5.h and pov05.ino you have to put this two files in to the same directory (in arduino you have to name this directory "pov05")

Let me know if it works


nikhil04arora (author)tempteta2014-04-10

Hello again

Thank you so much.

I put these 2 files in the same directory. Its still showing an "error sketch_apr11a.ino:781:21: error: font7x5.h: No such file or directory"

should i remove:- #include "font7x5.h"..?

tempteta (author)nikhil04arora2014-04-10

It strange because your error message talk about : sketch_apr11a.ino file

You have to open the pov05.ino file with arduino and to copy the code from this file into the arduino ide.

Please find below a step by step guide to do that

1 - close all the windows of your Arduino IDE

2 - download the file

3 - unzip it in your skectchbook folder

4 - be sure that the two files (font7x5.h and pov05.ino) are in a folder named pov05 at the root of your sketchbook folder

5 - start arduino ide, now in the menu "file" => "skectchbook" you souhld have a item called pov05.

6 - clic on pov05

7 - enjoy

englishfire (author)2013-09-14

please help me! pov05.ino is the arduino sketch. but what about the font7x5.h? where should I install the font?

tempteta (author)englishfire2013-09-15

Copy the font7x5.h file in the same directory of the pov05.ino file. Thank you for your interest for my instructable.

Grenat (author)2013-02-20

Voilà ma bricole >>>
Merci d'avance

Grenat (author)Grenat2013-02-20

Oups deux images !

Grenat (author)2012-12-27

I received all the materials needed for doing a similar pov :), i am on the soldering components part and i have a problem :s >>> how can the 500 ohms resistors be connected to pin 6 to 12 of arduino male header meanwhile it is occupied by
two male header of 8 pins?
Don't know if i have missed something to resolve that
Thank you in advance!:)

tempteta (author)Grenat2012-12-27

You have several ways to make that.
The first way is to make a kind PCB trace like this
The second way is to solder the leg of the resistor on the 8 pin header
I will post a picture of the back of my pcb with the two solution ASAP (maybe tomorrow)

tempteta (author)tempteta2013-02-08

you can found detail of the connexion here :*

Sorry for the delay !!!

best regards

bubble_gum_chewing_gum (author)2013-01-15

suggestion: 2 unnecessary dots can be removed by changing these lines

for (a=0;afor (a=0;a

for (a=0;a<(sizeof(texte)-1);a++)
for (a=0;a<(sizeof(texte2)-1);a++)

Thank you so much, I will update this instructable with your modification and some improvement
Thank y ou again and best regards

tempteta (author)tempteta2013-01-17


Grenat (author)2012-12-29

Oh i see, ok so i think i'm going to solder the leg of the resistor on the pin of the male header of the PCB (not arduino one), it is right ?
Ok cool can't wait to see it !
Thks :)

Grenat (author)2012-12-01

Thks for datasheet and technical tips, i will read that very carefully.!
I do not even think about all that as i am a very new beginner, so i think i'm going to experiment and try try try 100000 times !!! (hope i will find the good path !)
No problem, i would pass here for updating some news on that (or if i have any problems again!)
Meanwhile, i have to wait my little components come at home ( free shipping on ebay are very long : between 15-30 days :s!!!)

Thks for all & best ideas for the future!!

Grenat (author)2012-11-29

Yes, I also told myself that it would be weird to use a switch with mercury for this sort of device ! but as it is named "tilt", i thought maybe it would work....(or not!)
If you say the one you use has metal ball, then i have found something that i think can be used as the same way and largely cheaper, so i would buy that :

I don't know why but there is a bug when i want to sucribe at snootlab. But, if there is no free shipping, i think i'm dead!!

If it works with "Metal Ball Tilt Shaking Position Switches" i would post it here !

Thks !

tempteta (author)Grenat2012-11-29

Your second tilt sensor looks like mine.
You can find the datasheet of my tilt sensor here
This document tell us that the contact is close if the angle is superior to 15° from horizontal.

With yours : "The switch would be in the "off position" in the horizontal positon,
"on positon" when raised to 10-90 degree or shakes"

So il think it can work with this sensor. Maybe you will have to change a part of the code.
Maybe the line "if (digitalRead(2)==LOW)"  is not ideal for your sensor.... It can be better with if (digitalRead(2)==HIGH)... maybe.... try the two method...

Please post your result here even if it doesn't works...

Best regards

Grenat (author)2012-11-28

Hello !
Seems to be a very great and interesting project !
I have a question, the tilt switch you use, it is possible to use a mercury tilt switch, for example, these ones (saw on ebay) :

Thank you in advance and Best regards !

tempteta (author)Grenat2012-11-28

thank you for your interest for my project.
About the tilt switch, your "ebay model" works with a mercury drop... The problem can be that: when you shake your board the mercury drop can split into multiple drop.
Please not that I m not sure about that !!!! I have never use such tilt switch.

If you try please post a comment here.
For information, the tilt switch I use work with a metal ball (you can hear the noise of this ball on the video) You can find this part here ==>

Best regards

oliverkellow (author)2012-09-19

What is "PoliceX"
Is it the font size or something??

Isnt the maximum size simply 7 for 7 LEDS??
but it is set at 5.

Cool sketch

tempteta (author)oliverkellow2012-09-19

PoliceX is the police size on the X axis. The police used is 5x7 (x/y) police
So policeX is 5. If you change the police type with a different number of led for example change just the policeX parameter all the timer will be automatically adjusted to this new policiy...
Thank for you comment

oliverkellow (author)tempteta2012-09-20

Perhaps Police means something in Italian (if that is what it is in the example?)

So i can use more pins& Leds, adjust the PoliceX and get bigger letters, correct?

Thanks for the reply!

tempteta (author)oliverkellow2012-09-21

ok ok ok, I see. Police is the french word for font...
So if I use corect (...) english my last relpy is

PoliceX is the font size on the X axis. The font used is 5x7 (x/y) font. So policeX is 5. If you change the font type with a different number of led for example change just the policeX parameter all the timer will be automatically adjusted to this new font... Thank for you comment

Sorry again for my very bad english.....

tempteta (author)tempteta2012-09-21

"So i can use more pins& Leds, adjust the PoliceX and get bigger letters, correct? " ==> Yes you can !!!

For example is the TV-out library :
you can find the following file : "font4x6.cpp"
Is a 4x6 font so in this case you have to set PoliceX to 4
But in this case, you have to change some other parameters....

I will try to post an update of this skectch in the next day in order to use all the TV out library font...

If you have a special font, please send me the font file, and I will make the code with this font too.


ma7moodz (author)2012-04-16

will it work if I put it on a motor that rotates in high speed?

tempteta (author)ma7moodz2012-04-16

No, because the sensor if a tilt sensor...
If you put a motor, you have to use a REED switch (, a hall effect sensor ( and magnet. You can also use a led + photo transistor .

A last point, if you use a motor with really high speed, the code can fail because it doesn’t use interruptions...

Please post a link with the result of your experimentation


ma7moodz (author)tempteta2012-04-16

Do I have to use a switch?
I'm thinking of not using a switch at all.. you just plug the power to the arduino and it works
And sorry I don't know what do you mean with interruptions ( I'm new to arduino)

tempteta (author)ma7moodz2012-04-20

Yes you have!!!

It's for synchro. It you don't use a sensor it will work like this


or this

But if you use a sensor,


In this last case the sensor is an opto isolator.

Last point, interruptions is the french word for Interrupts (sorry for my bad english)==>

tempteta (author)2012-04-16

And there is an update of this code, with automatic timer calculation... see pov04.pde code...

About This Instructable




More by tempteta:Simple POV homemade arduino shield
Add instructable to: