Created
August 29, 2025 22:17
-
-
Save gizburdt/a44d29301b38bdeb6d5139c2366361f5 to your computer and use it in GitHub Desktop.
box
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <Servo.h> | |
| Servo doorServo; | |
| Servo fingerServo; | |
| int switchPin = 3; | |
| int doorServoPin = 2; | |
| int fingerServoPin = 11; | |
| int selectedMove = 0; | |
| int position = 0; | |
| int doorSpeed = 5; | |
| int fingerSpeed = 6; | |
| int slowSpeed = 1; | |
| int fakeDoorClosed = 141; | |
| int doorClosed = 162; | |
| int door70p = 70; // 110/155 = 0,71 | |
| int door80p = 60; // 125/155 = 0,80 | |
| int door90p = 50; // 140/155 = 0,90 | |
| int doorOpen = 40; | |
| int fingerHidden = 10; | |
| int finger25p = 35; // 40/129 = 0,31 | |
| int finger50p = 60; // 70/129 = 0,54 | |
| int finger60p = 80; // 80/129 = 0,62 | |
| int finger75p = 70; // 100/129 = 0,77 | |
| int finger80p = 80; | |
| int finger85p = 95; // 110/129 = 0,85 | |
| int finger90p = 105; // 127/129 = 0,98 | |
| int fingerPush = 115; | |
| bool debug = false; | |
| void setup() | |
| { | |
| pinMode(switchPin, INPUT); | |
| initializeDump(); | |
| doorServo.attach(doorServoPin); | |
| fingerServo.attach(fingerServoPin); | |
| doorServo.write(doorClosed); | |
| fingerServo.write(fingerHidden); | |
| } | |
| void loop() | |
| { | |
| if(digitalRead(switchPin) == HIGH) { | |
| if (selectedMove > 9) { | |
| selectedMove = 0; | |
| } | |
| if (selectedMove == 0) { | |
| simplePlay(); | |
| } | |
| else if (selectedMove == 1) { | |
| simpleWaitPlay(); | |
| } | |
| else if (selectedMove == 2) { | |
| trollClosePlay(); | |
| } | |
| else if (selectedMove == 3) { | |
| sneakPlay(); | |
| } | |
| else if (selectedMove == 4) { | |
| crazyPlay(); | |
| } | |
| else if (selectedMove == 5) { | |
| pissedPlay(); | |
| } | |
| else if (selectedMove == 6) { | |
| simplePlay(); | |
| } | |
| else if (selectedMove == 7) { | |
| simplePlay(); | |
| } | |
| else if (selectedMove == 8) { | |
| simplePlay(); | |
| } | |
| else if (selectedMove == 9) { | |
| simplePlay(); | |
| } | |
| // seriousPlay(); | |
| // slowPlay(); | |
| // matrixPlay(); | |
| selectedMove += 1; | |
| } | |
| } | |
| void openDoor(int speed = doorSpeed, int to = doorOpen, int from = doorClosed, int wait = 15) | |
| { | |
| for(position = from; position > to; position -= speed) { | |
| doorServo.write(position); | |
| delay(wait); | |
| } | |
| } | |
| void closeDoor(int speed = doorSpeed, int to = doorClosed, int from = doorOpen, int wait = 15) | |
| { | |
| for(position = from; position <= to; position += speed) { | |
| doorServo.write(position); | |
| delay(wait); | |
| } | |
| } | |
| void showFinger(int speed = fingerSpeed, int to = fingerPush, int from = fingerHidden, int wait = 15) | |
| { | |
| for(position = from; position < to; position += speed) { | |
| fingerServo.write(position); | |
| delay(wait); | |
| } | |
| } | |
| void hideFinger(int speed = fingerSpeed, int to = fingerHidden, int from = fingerPush, int wait = 15) | |
| { | |
| for(position = from; position >= to; position -= speed) { | |
| fingerServo.write(position); | |
| delay(wait); | |
| } | |
| } | |
| void openDoorSlowly(int speed = slowSpeed, int to = doorOpen, int from = doorClosed) | |
| { | |
| openDoor(speed, to, from, 30); | |
| } | |
| void closeDoorSlowly(int speed = slowSpeed, int to = doorClosed, int from = doorOpen) | |
| { | |
| closeDoor(speed, to, from, 30); | |
| } | |
| void showFingerSlowly(int speed = slowSpeed, int to = fingerPush, int from = fingerHidden) | |
| { | |
| showFinger(speed, to, from, 30); | |
| } | |
| void hideFingerSlowly(int speed = slowSpeed, int to = fingerHidden, int from = fingerPush) | |
| { | |
| hideFinger(speed, to, from, 30); | |
| } | |
| void initializeDump() | |
| { | |
| if (debug) { | |
| Serial.begin(9600); | |
| } | |
| } | |
| void dump(String message) | |
| { | |
| if (debug) { | |
| Serial.println(message); | |
| } | |
| } | |
| // Steps: | |
| // Open door | |
| // Show finger | |
| // Hide finger | |
| // Close door | |
| void simplePlay() | |
| { | |
| dump("Simple"); | |
| openDoor(); | |
| showFinger(); | |
| hideFinger(); | |
| closeDoor(); | |
| } | |
| // Open and wait, | |
| // then move finger and wait, | |
| // then switch of and hide | |
| void simpleWaitPlay() | |
| { | |
| dump("Simple Wait"); | |
| openDoor(); | |
| delay(800); | |
| showFinger(fingerSpeed, finger75p); | |
| delay(1000); | |
| // Extra speed so it has enough power | |
| showFinger(fingerSpeed + 1, fingerPush, finger75p); | |
| hideFinger(); | |
| closeDoor(); | |
| } | |
| // Open door | |
| // then close it many times, | |
| // wait, then quickly reopen, | |
| // switch off and hide. | |
| void crazyPlay() | |
| { | |
| dump("Crazy"); | |
| openDoor(doorSpeed, door80p); | |
| closeDoor(5, door80p); | |
| openDoor(doorSpeed, door70p); | |
| closeDoor(15, doorClosed, door70p); | |
| delay(700); | |
| openDoor(doorSpeed, door80p); | |
| delay(700); | |
| closeDoor(5, doorClosed, door80p); | |
| openDoor(8); | |
| showFinger(8); | |
| hideFinger(8); | |
| closeDoor(15); | |
| } | |
| // Open door, move finger very slowly forward and | |
| // back to hiding very slowly, then quickly close door | |
| void slowPlay() | |
| { | |
| dump("Slow"); | |
| openDoorSlowly(); | |
| showFingerSlowly(slowSpeed, finger90p); | |
| showFinger(fingerSpeed, fingerPush, finger90p); | |
| hideFingerSlowly(); | |
| closeDoorSlowly(slowSpeed, door80p); | |
| delay(100); | |
| closeDoor(4, doorClosed, door80p); | |
| } | |
| // Serious | |
| void seriousPlay() | |
| { | |
| dump("Serious"); | |
| openDoor(); | |
| showFinger(10); | |
| delay(2000); | |
| hideFingerSlowly(); | |
| closeDoor(8); | |
| } | |
| void trollClosePlay() | |
| { | |
| dump("Troll Close"); | |
| openDoor(); | |
| showFinger(fingerSpeed, finger90p); | |
| delay(1500); | |
| hideFinger(fingerSpeed, fingerHidden, finger90p); | |
| closeDoor(); | |
| delay(500); | |
| openDoor(); | |
| delay(1500); | |
| showFinger(); | |
| hideFinger(); | |
| closeDoor(); | |
| } | |
| void pissedPlay() | |
| { | |
| dump("Pissed"); | |
| openDoor(); | |
| showFinger(8); | |
| delay(200); | |
| // | |
| hideFinger(8, finger80p); | |
| showFinger(8, fingerPush, finger80p); | |
| delay(200); | |
| // | |
| hideFinger(8, finger80p, fingerPush); | |
| showFinger(8, fingerPush, finger80p); | |
| delay(200); | |
| // | |
| hideFinger(8, finger80p, fingerPush); | |
| showFinger(8, fingerPush, finger80p); | |
| delay(200); | |
| // | |
| hideFinger(8, finger80p, fingerPush); | |
| showFinger(8, fingerPush, finger80p); | |
| delay(200); | |
| // | |
| hideFinger(8, finger80p, fingerPush); | |
| showFinger(8, fingerPush, finger80p); | |
| delay(200); | |
| // | |
| hideFinger(8); | |
| closeDoor(); | |
| } | |
| void matrixPlay() | |
| { | |
| dump("Matrix"); | |
| openDoor(); | |
| showFinger(fingerSpeed, finger60p); | |
| showFingerSlowly(slowSpeed, finger90p, finger60p); | |
| showFinger(fingerSpeed, fingerPush, finger90p); | |
| delay(300); | |
| hideFinger(); | |
| closeDoor(); | |
| } | |
| void sneakPlay() | |
| { | |
| dump("Sneak"); | |
| openDoorSlowly(slowSpeed, door80p); | |
| delay(2000); | |
| showFingerSlowly(slowSpeed, finger25p); | |
| delay(500); | |
| openDoor(4, doorOpen, door80p); | |
| delay(100); | |
| showFinger(fingerSpeed, finger75p, finger25p); | |
| delay(500); | |
| hideFinger(fingerSpeed, finger50p, finger75p); | |
| delay(100); | |
| showFinger(fingerSpeed, finger75p, finger50p); | |
| delay(100); | |
| hideFinger(fingerSpeed, finger50p, finger75p); | |
| delay(100); | |
| showFinger(fingerSpeed, fingerPush, finger50p); | |
| hideFinger(); | |
| closeDoor(); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment