Bat Ear Code
/
multiServoBat
Fork of multiServoBat by
Diff: main.cpp
- Revision:
- 5:90f7d451910e
- Parent:
- 4:5bf4d3c6ec3b
--- a/main.cpp Tue Aug 06 15:50:39 2019 +0000 +++ b/main.cpp Wed Aug 14 13:28:50 2019 +0000 @@ -3,21 +3,52 @@ #define NUM_SERVOS 4 Servo servo[NUM_SERVOS]={p24,p23,p22,p21}; -float range = 0.0005; -float degrees = 45.0; void bothForwardOrBack(float min, float max, int direction, int startVEnd); //1 is forward, 2 is backwards void oneSideForwardOrBack(float min, float max, int direction, int side, int startVEnd);//1 is forward 2 is back, 1 is left 0 is right -void movementCombo(float randoNum, int forwardVBack); -int main() { - while(1) { - int rando = rand(); - // float randoNum = rando/32767; - float randoNum = 0.56; - movementCombo(randoNum, 1); - wait(3); - movementCombo(randoNum, 2); - wait(3); +void movementCombo(float firstDisplace, float secondDisplace, int forwardVBack, int whichSideFirst);//1 is left, zero is right + +Timer t; +float interval1 = 10; +float alreadyPast = 0; +int main() { + t.start(); + float previousSeconds = 0; + while(1) { + float currentSeconds = t.read(); + + float disp1 = 0.5; + float disp2 = disp1 + 0.5; + //THIS PART OF THE FUNCTION RUNS BASED ON A TIME LOOP + if(currentSeconds-previousSeconds>interval1) + { + previousSeconds = currentSeconds; + disp2 = disp1 + 0.2; + movementCombo(disp1, disp2, 1, 1); + wait(0.5); + movementCombo(disp1, disp2, 2, 1); + wait(1); + + disp1 = 0.9; + disp2 = 1.0; + movementCombo(disp1, disp2, 1, 0); + wait(0.5); + movementCombo(disp1, disp2, 2, 1); + wait(1); + + disp1 = 0.1; + disp2 = disp1 + 0.5; + movementCombo(disp1, disp2, 1, 0); + wait(0.5); + movementCombo(disp1, disp2, 2, 0); + wait(1); + } + + //THIS PART OF THE FUNCTION CONSTANTLY RUNS + movementCombo(disp1, disp2, 1, 1); + wait(0.5); + movementCombo(disp1, disp2, 2, 1); + wait(1); } } @@ -63,19 +94,29 @@ } printf("finished one run of bothForwardOrBack\n"); } -void movementCombo(float randoNum, int forwardVBack) +void movementCombo(float firstDisplace, float secondDisplace, int forwardVBack, int whichSideFirst) { //forward is 1, back is 2 + //1 is left first, 0 is right first - bothForwardOrBack(0.0, randoNum, forwardVBack, 0); //moves both ears partway + bothForwardOrBack(0.0, firstDisplace, forwardVBack, 0); //moves both ears partway wait(1); - oneSideForwardOrBack(randoNum, 1.0, forwardVBack, 1, 0); //moves left ear rest of way - oneSideForwardOrBack(randoNum, 1.0, forwardVBack, 1, 1); //moves left ear back to position - - oneSideForwardOrBack(randoNum, 1.0, forwardVBack, 0, 0); //moves right ear rest of way - oneSideForwardOrBack(randoNum, 1.0, forwardVBack, 0, 1); //moves right ear back to position + if(whichSideFirst == 1) + { + oneSideForwardOrBack(firstDisplace, secondDisplace, forwardVBack, 1, 0); //moves left ear rest of way + oneSideForwardOrBack(firstDisplace, secondDisplace, forwardVBack, 1, 1); //moves left ear back to position + oneSideForwardOrBack(firstDisplace, secondDisplace, forwardVBack, 0, 0); //moves right ear rest of way + oneSideForwardOrBack(firstDisplace, secondDisplace, forwardVBack, 0, 1); //moves right ear back to position + } + else + { + oneSideForwardOrBack(firstDisplace, secondDisplace, forwardVBack, 0, 0); //moves right ear rest of way + oneSideForwardOrBack(firstDisplace, secondDisplace, forwardVBack, 0, 1); //moves right ear back to position + oneSideForwardOrBack(firstDisplace, secondDisplace, forwardVBack, 1, 0); //moves left ear rest of way + oneSideForwardOrBack(firstDisplace, secondDisplace, forwardVBack, 1, 1); //moves left ear back to position + } wait(1); - bothForwardOrBack(0.0, randoNum, forwardVBack, 1); //moves both ears to position 0 + bothForwardOrBack(0.0, firstDisplace, forwardVBack, 1); //moves both ears to position 0 wait(1); }