Team Members
Olivia Bigazzi
Divya Karthikeyan
Kevin Lessard
Dirk de Wit
Description
We utilized 2 servo motors to recreate the mechanics of a cuckoo clock.
One motor was connected to a linkage arm constructed out of popsicle sticks. This mechanical set-up allowed us to change the rotational movement of the servo into linear movement thus allowing us to move our cuckoo (Einstein doll) forwards and backwards. We further designed a runway out of a plank of wood to smoothen this motion. The use of weights (nickels) helped constrain the linkage to provide smoother linear motion from the servo arm.
Our second motor was in charge of our door movement. We decided for this motion to focus on raising the door around a door frame creating a flip-up and down like motion. Positioning was key for this motion as the door had to move completely straight over the door frame, otherwise the system would skew and the motion would not work. We also had to play around with the length of the moment arms attached to the servo to achieve the correct rotational movement that would move the door.
See Einstein in action here (https://drive.google.com/file/d/0Bzu9JiqUhupNazQ0NVZTV3NOaHc/edit?usp=sharing)
Components Used
1 - Arduino Uno
1 - USB cord
1 - cardboard box
1 - foamcore board
5.5 - popsicle sticks
1 - plastic rod
8 - balsa wood sticks/boards
3 - balsa wood sheets
2 - servo motors
1 - breadboard
1 - Einstein foam figure
∞ - tape
5 - paper clips (stripped)
1ft - thread
2 - plastic discs
1 - servo motor box
2 - nickels
Code
#include <Servo.h>
Servo myServo;
Servo myServo2;
int pos = 20;
int ccDelay = 1000;
void setup()
{
myServo.attach(8);
myServo2.attach(7);
goInside();
closeDoor();
delay(1000);
}
void loop()
{
delay(ccDelay);
openDoor();
delay(ccDelay);
moveCluckook();
delay(ccDelay);
closeDoor();
}
void openDoor() {
for (int j = 160; j >= 0; j--) {
myServo.write(j);
delay(20);
}
}
void closeDoor() {
for (int i = 0; i <= 160; i++) {
myServo.write(i);
delay(20);
}
}
void goInside() {
for (int i = 50; i <= 110; i++) {
myServo2.write(i);
delay(20);
}
}
void moveCluckook() {
for (int j = 110; j >= 50; j--) {
myServo2.write(j);
delay(20);
}
for (int i = 50; i <= 110; i++) {
myServo2.write(i);
delay(20);
}
}
- Login to post comments