MOTION ACTIVATED HALLOWEEN SPIDER
What will you need?
Sumo Robot Kit
Fishing line
Hook or Pulley
Fake Spider
3D Printer
Optional: 3D Modeling Software
What will you learn about?
Speed of Sound
Rotational velocity and Speed
Timing and intervals
Circumference
Steps:
This activity assumes you have an already assembled Sumo Robot League kit. If you do not, please assemble following the instructions included with your kit.
Pick your location for scaring trick-or-treaters and determine where you want to place your robot. Mark the spot on the ceiling above where your spider will drop and attach your hook or pulley. Measure the maximum horizontal distance to detect passersby that you want to attack. After that, measure the distance from your robot to the ceiling hook. Then determine how far from the hook your spider will hang while it waits for a victim, and how far it will drop when it attacks.
Add the distances from your robot to the hook together with the vertical distances for the start and finish of your attack, and add a few inches for your knots at each end to make sure your fishing line is long enough.
3D print a spindle wheel (Sample Download Link) and attach fishing line
You can customize this step by designing your own spindle. Increasing the radius will increase the speed of your spider’s attack, but be careful. When you increase the radius, you increase the amount of torque required to carry your spider. Challenge your friends to see who’s spider can attack the fastest and still be able to climb back up.
Determine the inner circumference of your spindle so that you will know how many revolutions it takes for your spider to travel the distance needed for it’s attack.
Remove your robot’s motor wheel and replace with loaded spindle wheel. Unwind enough line and feed it over the ceiling hook and back down. Then tie spider to fishing line and wind/unwind the fishing line so that your spider is in position to attack.
Now that your robot and spider are setup and ready to attack, they just need the code to do it successfully. Here is the basic code to do it, but in order to dial in the perfect attack you’ll need to adjust your variables to set the appropriate sensor distance and motor run times.
( Sensor Loop Hint: the robot’s ‘eyes’ bounce high frequency sound off objects to detect distance. If you know the speed of sound you can calculate how long it should take for sound to travel to and from an object at the distance you want )
( Spider Attack Hint: remember that circumference calculation? At full speed, your motor should spin at approximately 150 RPM. How many revolutions do you need for your attack distance and how long will that take?)
This is your code to copy and paste into your IDE (select the appropriate pin assignments for you board)
// use these pin assignments if your circuitboard is red
#define echoPin A0
#define leftSensor A1
#define rightSensor A2
#define rearSensor A3
#define buttonPin 2
#define pingPin 3
#define leftDirection 4
#define buzzerPin 5
#define IREmitter 6
#define LED 7
#define rightDirection 8
#define leftMotorSpeed 9
#define rightMotorSpeed 10
// use these pin assignments if your circuitboard is black
#define echoPin A0
#define leftSensor A1
#define rightSensor A2
#define rearSensor A3
#define buttonPin 2
#define buzzerPin 3
#define IREmitter 4
#define leftMotorSpeed 5
#define rightMotorSpeed 6
#define leftDirection 7
#define rightDirection 8
#define pingPin 10
#define LED 13
void setup() {
pinMode(pingPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(leftDirection, OUTPUT);
pinMode(rightDirection, OUTPUT);
pinMode(leftMotorSpeed, OUTPUT);
pinMode(rightMotorSpeed, OUTPUT);
pinMode(leftSensor, INPUT);
pinMode(rightSensor, INPUT);
pinMode(IREmitter, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
long notes[5] = {};
long duration;
for (int i = 0; i < 5; i++) {
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(10);
digitalWrite(pingPin, LOW);
duration = pulseIn(echoPin, HIGH);
Serial.print(" Ping: ");
Serial.println(duration);
notes[i] = duration;
}
if (duration <= 9000)
spider();
delay(100);
}
void spider() {
digitalWrite(leftDirection, HIGH);
analogWrite(leftMotorSpeed, 0);
digitalWrite(rightDirection, LOW);
analogWrite(rightMotorSpeed, 250);
delay(2500);
digitalWrite(rightDirection, LOW);
analogWrite(rightMotorSpeed, 0);
delay(5000);
digitalWrite(rightDirection, HIGH);
analogWrite(rightMotorSpeed, 250);
delay(2500);
digitalWrite(rightDirection, LOW);
analogWrite(rightMotorSpeed, 0);
delay(5000);
}
Other Challenge Activities:
Can you use both motors so that two spiders attack from different positions or intervals?
Can you incorporate scary sounds with your robot’s piezo buzzer to make trick-or-treaters jump even more?