Animated Spooky Pumpkin Eyes

3,808

28

12

A couple of years ago while looking for inspiration for a new animated Halloween prop we stumbled upon a video from YouTube contributor 68percentwater called Arduino Servo Pumpkin. This video was exactly what we were looking for, however, some of the details seemed to be missing. So, we decided we should record our build, with some modifications, so that others could follow along. The first modification that we made was replacing the real pumpkin with a craft store foam version. For us this helps in two ways. First, no sticky mess. Second and most important, it's reusable. However, this decision means that other modifications were needed.

Tools:

1) X-ACTO knife or some other sharp knife.

2) Drill with multiple drill bits.

3) Saw

4) File

5) Sandpaper

6) Hot melt glue gun and glue sticks.

Parts:

1) Lifesize Foam Pumpkin

2) Spooky Eye Balls

3) 1" PVC Couplings

4) Micro Servos

5) Arduino Uno

6) Solderless Breadboard

7) Bailing Wire

8) Wooded Dowels

Video

To see a short video of the completed prototype check out https://www.youtube.com/watch?v=B73tJmcNe7E.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Disclaimer

Just a quick disclaimer to state that we take NO responsibility for anything that happens as a result of following this instructable. It's always best to follow the manufacturers instructions and safety sheets when building anything so please consult those documents for any of the parts and tools you use to build your own. We are simply just providing information on the steps we used to create ours. We are not professionals. As a matter of fact, 2 out of 3 of the individuals who participated in this build are children.

Step 2: Prep the Pumpkin

Cut a large access hole in the bottom of the pumpkin.

Using your drill and a drill bit a little smaller than the diameter of the spooky eyes drill randomly spaced holes in the pumpkin. The original inspiration pumpkin had 12 spooky eyes. You can adjust the number of eyes to your liking and the size of the pumpkin. The spooky eyes used in this project were about 1 1/4" in diameter so I used a 1" spade bit to drill the eyes.

After I drilled the holes I took the file to create a chamfered edge on the inside of the hole testing it frequently with one of the eyes. Once I was satisfied I used fine sandpaper to slightly chamfer the outside edge of the hole giving it a more realistic looking effect.

Step 3: Create the Eye Socket

Take a 1" PVC coupling or whatever size coupling you can find that fits your spooky eyes and cut it in half.

Depending upon the size of your spooky eyes you may need to bore the inside of the PVC coupling a little larger. The eyes used in this project were roughly 1 1/4" in diameter so the coupling halves were bored out using an 1 1/4" spade bit and drilled to a depth of about 3/8". However, the depth can be modified to meet the needs of the actual eyes you selected and the wall thickness of the pumpkin you are using. The thicker the foam walls of the pumpkin, the less need to bore the hole larger. In the inspiration video, contributor 68percentwater did not seem to need to modify the 1" couplings because the real pumpkin walls were thick but the walls on the foam pumpkin used in this project are very thin so modifications to the coupling were required.

Once the PVC coupling halves are properly modified for use as eye sockets test fit the spooky eyes. Determine where the center of the aligns with the eye socket. Using a small drill bit, drill a hole all the way through the eye socket. This hole will be used to attach the eye in the next step. In this project the holes are set 1/4" from the front of the eye socket. Alternatively, you can file groves into the front of the eye socket deep enough to allow the center of the spooky eye to sit inside the eye socket deep enough to appear realistic. Both processes were used in this project to test which worked better. Our conclusion is that the drilled holes are better.

Step 4: Attach the Spooky Eyes to the Eye Sockets

Find the center of the top of the spooky eye. Then drill a small hole through it and all the way out the bottom. In this project, the spooky eyes being used have a little reflective spot on their pupils so I decided that I would have these on the left side of the eyes. This meant that I had to take care when drilling the holes such that the reflective spot was always in the same position on each spooky eye as I drilled the holes. Also, on this project a few of the spooky eyes look up and down. On those eyes the holes were drilled 45* out (on the sides of the eyes).

Next, cut a 2" length of bailing wire. Carefully place the spooky eye in the eye socket and align the holes. Subsequently install the bailing wire through the one side of the eye socket, into the spooky eye and out the other side of the eye socket. Bend the protruding ends of the bailing wire over 90* and secure with hot melt glue.

Once the spooky eye is mounted in the eye socket cut a wooden dowel rod about 1 1/2" long. Taking care to have the spooky eye pupil centered in the socket, add a little hot glue to the tip of the wooden dowel rod and attach it to the center of the back of the spooky eye. You'll notice that each dowel rod has 2 holes drilled for attaching the servo to the rod via a short length of bailing wire. As this build is a prototype the exact amount of leverage and throw of the servos was not know at the time and thus it was decided that having both holes increased our chance of success. As it turns out the inner hole is more than sufficient and the length of the rods could be shortened thus providing better clearance inside the pumpkin.

Step 5: Mount the Servos to the Eye Sockets.

Hot glue a motor servo to each of the eye sockets. Once the glue hardens then take a section of bailing wire and connect the dowel rod to the servo horn. In this prototype we had to enlarge the servo horn hole before the bailing wire would fit. Make sure that the you center the eye and the servo horn before cutting the bailing wire to length this will ensure the correct throw to the eye socket. Adjust as needed.

Step 6: Glue the Eye Socket and Servo Assemblies Inside of the Pumpkin.

In this next step hot glue each of the eye socket and servo assemblies inside of the pumpkin. Take care to orient all of the eyes correctly.

Step 7: Connect the Electronics

In this step you will need to connect servos to the power, ground and digital pins. The servos used in this prototype have red (5 volt +), brown (ground -) and orange (trigger) wires. The red wire of each servo s must be connected to the 5 volt pin of the Uno board, the brown wire of each servo must be connected to the ground pin of the Uno board and Finally, the orange wire of each servo must be connected to a digital output pin on the Uno board. The program below uses pins 5 through 10 to control the six servos. Therefore, we connected pin 5 to the first servo, 6 to the second, 7 to the third, etc., etc. until we finally had all 6 servos connected. To aid in connecting all of the 5 volt and ground connections a small solderless breadboard was used to distribute both the 5 volts and ground connections from the Uno board to each of the servos.

Step 8: Tuck Everything Insde

Once all of the connections are made gently tuck the Uno board and solderless breadboard inside of the pumpkin but out of the way of the moving servos. In the prototype we attached the solderless breadboard to the back of the Uno board using double faced tape.

Step 9: Source Code

The code used for this project is very simple. We create a servo array and attach the array to 6 digital pins. Then we randomly generate positions between 5 and 175 degrees for each servo and sleep for up to 2 seconds.

#include <Servo.h>

// a maximum of eight servo objects can be created  
Servo myServos[6]; 	// Now we have a 6 servo array.
int pos = 0;    	// variable to store the servo position.
int delayFactor = 10; 	// variable to store the delay factor. 

//Initialize the system.
void setup() {
  Serial.begin(115200);
  // attach the 6 pins to the servo array.
  for (int i = 0; i < 6; i++) {
	myServos[i].attach(i + 4);
  }

  delay(100);
  //Let's make it more random
  randomSeed(50);  
  
  Serial.println("Start ...");
}

//Main loop
void loop() {
  //Move all 8 servos to some random position.
  for (int s = 0; s < 6; s++) {
    // get a random position for the eyes.
    pos = random(0,30) * 6;
    if(pos<5){
      pos = 5;
    }else if(pos>175){
      pos = 175;
    }
    
    //Move the eyes to a new random position
    myServos[s].write(pos);
    delay(20);
  }

  delayFactor = random(25,200) * 10;  //Delay for up to 2 seconds.
  Serial.print("Delay for ");
  Serial.println(delayFactor);
  
  delay(delayFactor);
}
Halloween Contest 2018

Participated in the
Halloween Contest 2018

Be the First to Share

    Recommendations

    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    12 Discussions

    None
    PierreV16

    8 months ago

    Thanks for your response.

    I still have one question.
    These six servo on Arduino Uno with the 5V from the Arduino? This I want to know because I want to use 12 servos. I had put the servos on an adapter 5V 3A and Arduino Uno on USB, but that doesn't work.
    If there are six on one Arduino (Atmega 328) than it would have to succeed on a PCB with two Atmega 328 (shortened version) and this adapter 5V 3A or not?

    3 replies
    None
    SpecialRobotBuildersPierreV16

    Reply 8 months ago

    Hi PierreV16,
    For the 6 servos that I used in my creation I was able to run all of them off of the 5V from the Uno but if you are going with 12 servos then I would think you would need to power them separately. Good luck and please let me know how it turns out.

    None
    PierreV16SpecialRobotBuilders

    Reply 7 months ago

    Six servos directly on Arduino Uno, that works, also tested.

    Now 12 servos, on separate DC adapter 5V 5A with a capacitor of 1000 Ω put on the + and-of the flow and that works also fine.

    None
    PierreV16

    8 months ago

    Have a problem in the interpretation of the servos.
    Am not strong in making code but now I not coming out.

    It is talked about 6 servos: "The program below uses pins 5 through 10 to control the six servos. Therefore, we connected pin 5 to the first servo, 6 to 7, the second to the third, etc., etc. until we finally had all 6 servos connected ".

    In the code States: "//Move all 8 servos to some random position. for (int s = 0; s < 6; s ++) {
    My question is: "there are now 6 or 8 servos and eyes" or does it not matter for the code?

    My question is: "are there now 6 or 8 servos and eyes" or does it not matter for the code?

    1 reply
    None
    SpecialRobotBuildersPierreV16

    Reply 8 months ago

    Oh yes, the comment is incorrect. Originally we had planned on having 8 eyes but later settled on only 6. Therefore the comment should be changed to say "Move all 6 servos". The reason we eliminated 2 servos is because the interior of the pumpkin we used got really tight with only 6. If you have a larger pumpkin you can have 8 servos but you will need to change the servo array to hold 8 servos and the for loops would also need changed from 6 to 8.

    Thanks and good luck.