Pololu Blog »
Simple Animatronic Skull
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
- A-Star 32U4 Mini SV
- Power HD High-Speed Mini Servo HD-1705MG
- Addressable Through-Hole 8mm RGB LED with Diffused Lens, WS2811 Driver
- Premium Jumper Wire 50-Piece Rainbow Assortment M-M 3″
- Pololu Stamped Aluminum L-Bracket for NEMA 17 Stepper Motors (This is temporary; I will be attaching the head to a doll in the near future.)
- Battery pack
- Skull with hinged jaw
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.