Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Servo.h>
- Servo doorServo;
- Servo fingerServo;
- int swPin = 2; //switch on pin 2
- int pos = 0;
- int selectedMove = 0; //move selector
- void setup()
- {
- pinMode(swPin, INPUT);
- doorServo.attach(9); //set door servo on Pin 9 pwm
- fingerServo.attach(10); //set finger servo on Pin 10 pwm
- doorServo.write(80); //set door to hiding position
- fingerServo.write(0); //set finger to hiding position
- }
- void loop(){
- //if the switch is on, move door and finger to switch it off
- if(digitalRead(swPin) == HIGH)
- {
- if (selectedMove > 9) {
- selectedMove = 0;
- } //when all moves are played, repeat the moves from beginning
- if (selectedMove == 0) {
- simpleClose();
- }
- else if (selectedMove == 1) {
- simpleClose();
- }
- else if (selectedMove == 2) {
- simpleClose2();
- }
- else if (selectedMove == 3) {
- crazydoor();
- }
- else if (selectedMove == 4) {
- slow();
- }
- else if (selectedMove == 5) {
- serious();
- }
- else if (selectedMove == 6) {
- trollClose();
- }
- else if (selectedMove == 7) {
- simpleClose();
- }
- else if (selectedMove == 8) {
- matrix();
- }
- else if (selectedMove == 9) {
- sneak();
- }
- selectedMove += 1; //swith to next move
- }
- }
- // Moves
- // basic move
- void simpleClose()
- {
- //Moving door
- for(pos = 80; pos < 155; pos += 3)
- {
- doorServo.write(pos);
- delay(15);
- }
- //Moving hand
- for(pos = 0; pos < 129; pos += 4)
- {
- fingerServo.write(pos);
- delay(15);
- }
- //hiding hand
- for(pos = 129; pos>=0; pos-=4)
- {
- fingerServo.write(pos);
- delay(15);
- }
- //hiding door
- for(pos = 155; pos>=80; pos-=3)
- {
- doorServo.write(pos);
- delay(15);
- }
- }
- // open and wait, then move finger and wait, then switch of and hide
- void simpleClose2()
- {
- //Moving door
- for(pos = 80; pos < 155; pos += 3)
- {
- doorServo.write(pos);
- delay(15);
- }
- delay(800);
- //Moving hand
- for(pos = 0; pos < 100; pos += 4)
- {
- fingerServo.write(pos);
- delay(15);
- }
- delay(1000);
- for(pos = 100; pos < 129; pos += 4)
- {
- fingerServo.write(pos);
- delay(15);
- }
- //hiding hand
- for(pos = 129; pos>=0; pos-=5)
- {
- fingerServo.write(pos);
- delay(15);
- }
- //hiding door
- for(pos = 155; pos>=80; pos-=3)
- {
- doorServo.write(pos);
- delay(15);
- }
- }
- //open door then close it many times, wait, then quickly reopen, switch off and hide.
- void crazydoor()
- {
- //Moving door
- for(pos = 80; pos < 125; pos += 3)
- {
- doorServo.write(pos);
- delay(15);
- }
- //hiding door
- for(pos = 125; pos>=80; pos-=5)
- {
- doorServo.write(pos);
- delay(15);
- }
- //Moving door
- for(pos = 80; pos < 110; pos += 3)
- {
- doorServo.write(pos);
- delay(15);
- }
- //hiding door
- for(pos = 110; pos>=80; pos-=15)
- {
- doorServo.write(pos);
- delay(15);
- }
- delay(700);
- //Moving door
- for(pos = 80; pos < 125; pos += 3)
- {
- doorServo.write(pos);
- delay(15);
- }
- delay(700);
- //hiding door
- for(pos = 125; pos>=80; pos-=5)
- {
- doorServo.write(pos);
- delay(15);
- }
- //Moving door
- for(pos = 80; pos < 155; pos += 8)
- {
- doorServo.write(pos);
- delay(15);
- }
- //Moving hand
- for(pos = 0; pos < 129; pos += 3)
- {
- fingerServo.write(pos);
- delay(15);
- }
- //hiding hand
- for(pos = 129; pos>=0; pos-=3)
- {
- fingerServo.write(pos);
- delay(15);
- }
- //hiding door
- for(pos = 155; pos>=80; pos-=15)
- {
- doorServo.write(pos);
- delay(15);
- }
- }
- //open door,move finger very slowly forward and back to hiding very slowly, then quickly close door
- void slow()
- {
- //Moving door
- for(pos = 80; pos < 155; pos += 1)
- {
- doorServo.write(pos);
- delay(30);
- }
- //Moving hand
- for(pos = 0; pos < 129; pos += 1)
- {
- fingerServo.write(pos);
- delay(30);
- }
- //hiding hand
- for(pos = 129; pos>=0; pos-=1)
- {
- fingerServo.write(pos);
- delay(30);
- }
- //hiding door
- for(pos = 155; pos>=125; pos-=1)
- {
- doorServo.write(pos);
- delay(30);
- }
- delay(100);
- for(pos = 125; pos>=80; pos-=4)
- {
- doorServo.write(pos);
- delay(15);
- }
- }
- //serious
- void serious() {
- //Moving door
- for(pos = 80; pos < 155; pos += 3)
- {
- doorServo.write(pos);
- delay(15);
- }
- //Moving hand
- for(pos = 0; pos < 70; pos += 1)
- {
- fingerServo.write(pos);
- delay(15);
- }
- delay(800);
- //hiding door
- for(pos = 155; pos>=130; pos-=3)
- {
- doorServo.write(pos);
- delay(15);
- }
- //hiding door
- for(pos = 130; pos < 155; pos+=3)
- {
- doorServo.write(pos);
- delay(15);
- }
- //hiding door
- for(pos = 155; pos>=130; pos-=3)
- {
- doorServo.write(pos);
- delay(15);
- }
- //hiding door
- for(pos = 130; pos < 155; pos+=3)
- {
- doorServo.write(pos);
- delay(15);
- }
- fingerServo.write(40);
- delay(1000);
- //Moving hand
- for(pos = 40; pos < 129; pos += 4)
- {
- fingerServo.write(pos);
- delay(15);
- }
- //hiding hand
- for(pos = 129; pos>=0; pos-=4)
- {
- fingerServo.write(pos);
- delay(15);
- }
- for(pos = 120; pos>=80; pos -= 1)
- {
- doorServo.write(pos);
- delay(15);
- }
- }
- void trollClose(){
- //Moving door
- for(pos = 80; pos < 155; pos += 3)
- {
- doorServo.write(pos);
- delay(15);
- }
- //Moving hand
- for(pos = 0; pos < 127; pos += 4)
- {
- fingerServo.write(pos);
- delay(15);
- }
- //hiding door
- for(pos = 155; pos>=130; pos-=3)
- {
- doorServo.write(pos);
- delay(15);
- }
- delay(2000);
- for(pos = 130; pos < 155; pos += 3)
- {
- doorServo.write(pos);
- delay(15);
- }
- for(pos = 155; pos>=140; pos-=3)
- {
- doorServo.write(pos);
- delay(15);
- }
- for(pos = 140; pos < 155; pos += 3)
- {
- doorServo.write(pos);
- delay(15);
- }
- delay(500);
- //hiding hand
- for(pos = 127; pos>=0; pos-=4)
- {
- fingerServo.write(pos);
- delay(15);
- }
- //hiding door
- for(pos = 155; pos>=80; pos-=3)
- {
- doorServo.write(pos);
- delay(15);
- }
- }
- void matrix()
- {
- //Moving door
- for(pos = 80; pos < 155; pos += 3)
- {
- doorServo.write(pos);
- delay(15);
- }
- //Moving hand
- for(pos = 0; pos < 80; pos += 4)
- {
- fingerServo.write(pos);
- delay(15);
- }
- for(pos = 80; pos < 129; pos += 1)
- {
- fingerServo.write(pos);
- delay(30);
- }
- delay(300);
- for(pos = 129; pos>=0; pos-=4)
- {
- fingerServo.write(pos);
- delay(10);
- }
- //hiding door
- for(pos = 155; pos>=80; pos-=3)
- {
- doorServo.write(pos);
- delay(15);
- }
- }
- void sneak()
- {
- //Moving door
- for(pos = 80; pos < 130; pos += 1)
- {
- doorServo.write(pos);
- delay(30);
- }
- delay(2000);
- //Moving hand
- for(pos = 0; pos < 40; pos += 1)
- {
- fingerServo.write(pos);
- delay(30);
- }
- delay(500);
- for(pos = 130; pos < 155; pos += 4)
- {
- doorServo.write(pos);
- delay(15);
- }
- delay(100);
- for(pos = 40; pos < 90; pos += 4)
- {
- fingerServo.write(pos);
- delay(15);
- }
- delay(500);
- //hiding hand
- for(pos = 90; pos>=70; pos-=4)
- {
- fingerServo.write(pos);
- delay(15);
- }
- delay(100);
- for(pos = 70; pos < 90; pos += 4)
- {
- fingerServo.write(pos);
- delay(15);
- }
- delay(100);
- for(pos = 90; pos>=70; pos-=4)
- {
- fingerServo.write(pos);
- delay(15);
- }
- delay(100);
- for(pos = 70; pos < 129; pos += 4)
- {
- fingerServo.write(pos);
- delay(15);
- }
- for(pos = 129; pos>=0; pos-=4)
- {
- fingerServo.write(pos);
- delay(15);
- }
- //hiding door
- for(pos = 155; pos>=80; pos-=3)
- {
- doorServo.write(pos);
- delay(15);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement