How to Halloween Skull and Bones




Did you watch some of the amazing Halloween props on Youtube? I did and was determined to create one of my own. I first wanted to create a halloween prop over a year ago, but the parts arrived late and I skipped last years Halloween.

This year I had plenty of time before Halloween arrived, so.....

When this project is finished, it will gently glow the eyes and play a happy song. When someone triggers the motion detector, the hand will point to the intruder, the volume will go up, the scary sound effects will play while the eyes blink violently. Once there is no more activity in front of the sensor, the hand will return and the device will go back to idle mode again!

This tutorials comes with all disclaimers, including but not limited to burning down your house and causing a heartattack on your grandmother...

Step 1: Getting the Required Stuff

Arduino Mega (or use a compatible clone)

Motion detector (also known as PIR sensor)

Servo motor

DFPlayer mini MP3 module

Micro SD card


Small speaker (2 Watt I think, quite small)

Some resistors (2x 330Ohm, 2x 1KOhm)

3*AA battery enclosure

9 volts powersupply for arduino


Bag of bones to your liking

Old cloth

Some leftover wood to build the project on

Soldering iron and solder

Some isolation tape (black)

Step 2: Building the Base

Cut yourself a base from the leftover wood, mine is an oval about 50 cm by 20 cm. On the base you need to create a standing base in which to fit the servo motor. I attached two small pieces of wood to the base using angle brackets. I then inserted the servo in between the pieces of wood. I taped the top of the standing base (with the servo motor in it) with black tape to make it less visible. On the rotor of the servo motor I attached a thin piece of wood to apply the hand.

Step 3: Preparing the Skull

I drilled two holes in the eyes of the skull. I then attached two 40 cm wires to each of the red leds. The wires were then fed through the hole in the eye and the led was hot-glued in place. Through a third larger hole in the bottom I retrieved the led wires using a piece of electrical wire with a hook bend at the end.

Step 4: Attaching All the Wiring

Please have a look at the Fritzing image attached. If you are new to this, it may be a bit overwhelming at first. Just follow the wires and connect one by one to it's correct place in the scheme. It will take some time. The distance sensor to the right of the arduino should be a PIR sensor (requiring the same amount of wiring, check your sensor and / or the image for the correct wiring). The image lists a 2x AA power, but you probably need 3x AA to rotate the servo.

Step 5: Uploading the Data

There is one file missing here as it is copyrighted. It is the file 0003halloween.mp3 which will be the idle tune playing when there is noone around. Please copy all the files (and your favorite idle song named 0003halloween.mp3) to a folder MP3 on the micro SD card. Insert the SD card to the DFPlayer's card reader.

Install the Arduino IDE software from You will need to add the MP3 files as a library to the Arduino software (look at for instructions if neccesary).

Now attach a USB cable between the arduino and your PC, check on which COM port your Arduino is connected (and configure the Arduino software accordingly). Load the .ino file in the Arduino software and upload the file to the Arduino. It *should* start testing the different components:

1. Light up the eyes

2. Play a song

3. Rotate the servo motor back and forth

4. Calibrate the sensor (this will take 30 seconds, be patient)

Then it should loop idle until a kid triggers the motion sensor!!!

Step 6: The Finishing Touch

I had an old black (ideal for Halloween) cloth lying around. First lay down the cloth and place your project on top of it towards the back. Take the front of the cloth and wrap it over the project (but not the hand of course). Now place the skull on top of the cloth (keep the wires to the skull hidden) and locate the motion sensor in an appropriate place. Add some more bones to the project to your liking and power on your project.

Happy Halloween!!!

Step 7: Some More Thoughts

Originally I intended the head to be mounted on the servo motor. As my engineering skills aren't up to par, I ended up with a stationary head and moving hand. Feel free to place the skull on the servo motor for added effect.

I also had the idea to dress the result up with a t-shirt (this is why I have an oval base the size of a chest). Hanging by a few strands of clear wire, "floating" in mid-air with a rotating head and a few arm bones dangling would make the ultimate version, but alas.... May be in the future...

2 People Made This Project!


  • Paper Contest

    Paper Contest
  • Warm and Fuzzy Contest

    Warm and Fuzzy Contest
  • Organization Contest

    Organization Contest

9 Discussions


10 months ago

Very good the project. congratulations for sharing it


1 year ago

Hi again. I hope you don't mind me asking a coding question. While
the skeleton is talking I got the head swiveling really well using the
below code to the ReturnHead(); function.

void ReturnHead() {

for (pos = 60; pos < 110; pos += 1) {
myservo.write (pos);
delay (30);
for (pos = 110; pos > 50; pos -= 1) {
myservo.write (pos);
delay (30);

for (pos = 50; pos < 100; pos += 1) {
myservo.write (pos);
delay (30);
delay (1000);
for (pos = 100; pos > 80; pos -= 1) {
myservo.write (pos);
delay (30);

works very well for the first song(0001.mp3) however in all the other
songs (0002 ~0012) the skeletons head does not swivel at all. Is there
any easy way for me to adjust the code so it's head will swivel during
all the songs?

If not then I will just add the servo to another arduino UNO. Thank you

feel bad to ask you this technical question because it isn't really in
the scope of your tutorial. So if you are too busy to answer I totally


2 replies
Juany73 patsensei

Reply 10 months ago

Could you please provide the code please?

Kapitein Haakpatsensei

Reply 1 year ago

Hello Patsensei,

No problem asking for help. The swiveling during the other songs isn't done in my script, but you should be able to add it (though the blinking of the leds might take a hit).
In the original code you will find the following lines:

if (play_state == LOW){ // there is a song currently playing
previousMusicMillis = millis(); // remember time for future
BlinkEyes (); // set the eye leds to the next value

You could change this piece of line to:

if (play_state == LOW){ // there is a song currently playing
previousMusicMillis = millis(); // remember time for future
BlinkEyes (); // set the eye leds to the next value

You can then create a new void RotateSkull() {} where you change the position of the skull. The BlinkEyes() is called * a lot * of times a second to make them blink, so in the RotateSkull you should not rotate it every time, but use a timer and rotate the head once every few times.

Best of luck!
Kapitein Haak


10 months ago on Step 5

Cual es el código .saludos gracias


2 years ago

Why do you use a Mega instead of an Uno or another version of Arduino? I'm new to Arduino, and my inexperience may be showing (glaring?). This will be a great project for next Halloween.

1 reply
Kapitein HaakRichardN81

Reply 2 years ago

Hello Richard,

I used a Mega because it was really cheap with a lot of components. I got myself something like this: It included a Mega which has way more inputs/outputs then the Uno and has more RAM. When you go for the original Arduino the price difference is quite high. You can probably run the project on the Uno, but no guarantees (and you may have to change some port numbers).

Best regards,
Kapitein Haak.


2 years ago

This came out really well! Your instructable is laid out really well too. I look forward to seeing the floating version when you decide to make it. :)

1 reply
Kapitein HaakSwansong

Reply 2 years ago

Hello Swansong,

Thanks for the compliment! It may take some time before a floating version comes from my hands. But maybe someone else will create a proper version ;-).