DIY Halloween Decorations: Animated Skull


In this build video, I show you my Animated Skull project. Using a servo, some 3D printing, and some clever circuitry, this inexpensive Halloween prop can automatically move in sync with recorded audio!

Check out the photo gallery below for more details!

Project Bill of Materials :

Please Note: Its Project Day! is a participant in the Amazon Services, LLC Associates Program, an affiliate advertising program designed to provide means for sites to earn advertising fees. Please consider helping us bring you awesome projects by using the affiliate links when you order from Amazon.

(1) 3D printed parts kit (link to my Etsy Page)
(1) Hi-Tec HS-311 servo (Amazon)
(1) steel wire
(1) audio jack (Amazon)
(1) power jack (Amazon)
(1) power supply (Amazon)
(1) Arduino Pro Mini (Amazon)
Audio conditioning circuit board:
(1) 2N3904 transistor
(1) 10k Ohm Resistor
(1) 100k Ohm Resistor
(1) 22k Ohm Resistor
(1) 3.3uF cap
(1) 0.01uF cap
(1) 0.047uF cap
(1) 1N4148 diode
(1) trimmed proto board
(1) 2-pin 0.1” header
(1) 0.1” jumper
(1) twisted pair from ethernet cable (3in)
(1) 22Ga Solid Copper Black wire (6in)
(1) 22Ga Solid Copper Red wire (6in)
(1) 22Ga Solid Copper Green wire (3in)

Sample Arduino Code:

This is sample code for my Animated Skull project

You can see this code in action on YouTube:
Or visit my webpage at Written by Eric Wiemers for It's Project Day. (C)2018 Copyright Eric Wiemers **************************************************************/ #define Audio_pin A3 #define Servo_pin 11 #include <Servo.h> Servo TalkServo; int pos = 0; int Amp = 0; int AmpMin = 0; int AmpMax = 60; int AmpLow = 10; int Ave = 0; int Level = 0; int ServoMax = 165; //Up int ServoMin = 125; //Down void setup() { // put your setup code here, to run once: pinMode(Audio_pin, INPUT); pinMode(Servo_pin, OUTPUT); TalkServo.attach(Servo_pin); } void loop() { Amp = 0; // Sample audio amplitude averaged over 5 samples for(int i = 0; i < 5; i++){ Level = analogRead(Audio_pin); if(Level > AmpLow){ if(Amp == 0){Amp = Level;} Amp = Level * 1/5 + Amp * 4/5; } } if(Amp < AmpMin){Amp = AmpMin;} if(Amp > AmpMax){Amp = AmpMax;} pos = map(Amp,AmpMin,AmpMax,ServoMax, ServoMin); TalkServo.write(pos); }

When Halloween gets closer, I’ll post more pictures of the final dressing.

That was my project day!

Recommended Posts

A Fun Recipe for Kitchen Chemistry

Chemistry is all around us every day. And now, it’s all over my father-in-laws refrigerator, too. My father-in-law is a chemical engineer and a kitchen chemist in his free time. My wife and I thought that the chemistry equivalent of poetry fridge magnets would be the perfect Christmas gift for him. The concept is pretty simple, find […]


Salvage – It’s Not Just for Sinking Boats

What do you do when your beloved printer, scanner, blender, or remote controlled car breaks? I’m glad you asked because this weeks’ post is about salvage. I’m going to use my experience to help you quickly sift through the junk and help you find the good stuff. sal·vage ( sal-vij )  – To rescue or […]


A Twist to Build a Dream On

Some projects, like this deburring/countersinking tool sit on the back-burner for a long time. Dusting them off to finish the job feels like sharing a meal with an old friend. This deburring tool is a handy way I came up with to reduce the amount of time I spend switching between drill bits and countersinking […]


Leave A Comment