Simple Animatronic Skull

Posted by Jeremy on 10 October 2014

If you have been following our blog, you have seen some fun and scary Halloween projects posted by my coworkers here at Pololu, so I thought that I would share the first part of the prop for my costume this year. After watching an animatronic devil baby terrorize New York City, I knew I wanted to build a similar demon baby that would be attached to me with a baby carrier.

Implementation

After finding a small skull at a local Halloween store (for 4 bucks!), I was ready to throw some servos into it. Using hot glue, I attached two HD-1705MG high-speed mini servos, one for the jaw motion and one for the neck motion. I also decided to add two 8mm addressable RGB LEDs into the eye sockets of the skull. For controlling the servos and LEDs, I used an A-Star 32U4 Mini SV. The LEDs are powered by the A-Star’s 5V output, which is regulated by the onboard switching regulator. With the Arduino Servo library and our Arduino library for WS281x-Based Addressable RGB LEDs, I was able to get this skull animated quickly. Below is a GIF that shows the skull in action and the program I used for the demo:

Simple animatronic skull laughing.

#include <Servo.h> 
#include <PololuLedStrip.h>

// Create an ledStrip object
PololuLedStrip<12> ledStrip;

// Create a buffer for holding 2 colors for the eyes.
#define LED_COUNT 2
rgb_color colors[LED_COUNT];

// Create servo objects to control neck and jaw servos 
Servo neck;  
Servo jaw; 



void setup() 
{ 
  delay(500);

  // attaches the servo on pin 2 and 3 for neck and jaw.
  neck.attach(2);   
  jaw.attach(3);

  // set eyes red
  colors[0] = (rgb_color){ 30, 0, 0   };
  colors[1] = (rgb_color){ 30, 0, 0   };

  ledStrip.write(colors, LED_COUNT);  
} 


void loop() 
{ 
  // move neck 180 degrees and laugh
  neck.writeMicroseconds(400);              
  jaw.writeMicroseconds(1200);
  delay(400); 
  jaw.writeMicroseconds(1400);
  delay(100); 
  jaw.writeMicroseconds(1200);
  delay(100); 
  jaw.writeMicroseconds(1400);
  delay(100); 
  jaw.writeMicroseconds(1200);
  delay(1000); 
  
  // move neck back 180 degrees and glow eyes
  neck.writeMicroseconds(2200);             
  for(int i = 30; i < 60; i++)
  {
    colors[0] = (rgb_color){ i, 0, 0 };
    colors[1] = (rgb_color){ i, 0, 0 };
    ledStrip.write(colors, LED_COUNT); 
    delay(20);
  }
  for(int i = 60; i > 0; i--)
  {
    colors[0] = (rgb_color){ i, 0, 0 };
    colors[1] = (rgb_color){ i, 0, 0 };
    ledStrip.write(colors, LED_COUNT); 
    delay(20);
  }
  for(int i = 0; i < 30; i++)
  {
    colors[0] = (rgb_color){ i, 0, 0 };
    colors[1] = (rgb_color){ i, 0, 0 };
    ledStrip.write(colors, LED_COUNT); 
    delay(20);
  }
} 

Complete parts list

Looking forward

Like I mentioned earlier, the goal is to make a full animatronic baby that I would carry around with me so I can scare unsuspecting people (maybe I’ll go for a nice walk down the Las Vegas Strip). Look for an update soon.

0 comments

Post a comment

Using your Pololu account allows you to customize your avatar and manage your comments; you can also post anonymously.

Related Products

A-Star 32U4 Mini SV (ac02c)
Power HD High-Speed Mini Servo HD-1705MG
Addressable Through-Hole 8mm RGB LED with Diffused Lens, WS2811 Driver (10-Pack)
Log In
Pololu Robotics & Electronics
Shopping cart
(702) 262-6648
Same-day shipping, worldwide
Menu
Shop Blog Forum Support
My account Comments or questions? About Pololu Contact Ordering information Distributors