Commits

Jody McAdams  committed 999cbc5

update it walks

  • Participants
  • Parent commits 5fd6f0b

Comments (0)

Files changed (1)

File Experimental/MicroHorse/MicroHorse.ino

 Animation* lowerLegServoAnimBR;
 Animation* lowerLegServoAnimBL;
 
-const Animation::AnimMode upperLegMode = Animation::AnimMode_PingPong;
-const int numUpperLegAnimValues = 2;
-float upperLegAnimValues[numUpperLegAnimValues] = {-60,30};
+const float animSpeed = 3.0f;
 
+const float rightSideOffset = 1.8f;
+
+const float frontOffset = 0.0f;
+const float backOffset = 0.0f;
+
+const float backOffsetLower = 2.0f;
+const float frontOffsetLower = 1.4f;
+  
+const float animTimeShared = 3.0f;
+
+//Front
+const float pauseTimeF = 0.0f;
+//Back
+const float pauseTimeB = 0.9f;
+
+const float animTimeSharedF = animTimeShared + pauseTimeB;
+const float animTimeSharedB = animTimeShared + pauseTimeF;
+  
+const Animation::AnimMode upperLegMode = Animation::AnimMode_Wrap;
 const Animation::AnimMode lowerLegMode = Animation::AnimMode_Wrap;
-const int numLowerLegAnimValues = 2;
-float lowerLegAnimValues[numLowerLegAnimValues] = {-30,90};
+
+//Front
+const int numUpperLegAnimValuesF = 4;
+float upperLegAnimValuesF[numUpperLegAnimValuesF] = {-90,-10,20,20};
+
+const int numLowerLegAnimValuesF = 5;
+float lowerLegAnimValuesF[numLowerLegAnimValuesF] = {0,0,80,-5,0};
+
+//Back
+const int numUpperLegAnimValuesB = 4;
+float upperLegAnimValuesB[numUpperLegAnimValuesB] = {-50,-20,20,10};
+
+const int numLowerLegAnimValuesB = 5;
+float lowerLegAnimValuesB[numLowerLegAnimValuesB] = {0,0,80,-5,0};
 
 Servo servoUpperFR;
 Servo servoUpperFL;
 void setup() 
 { 
   //Create animations
-  const float animTimeSharedTop = 0.25f;
-  const float animTimeSharedBottom = animTimeSharedTop*2.0f;
   
-  upperLegServoAnimFR = new Animation(upperLegAnimValues,numUpperLegAnimValues,upperLegMode,animTimeSharedTop);
-  upperLegServoAnimFL = new Animation(upperLegAnimValues,numUpperLegAnimValues,upperLegMode,animTimeSharedTop);
-  upperLegServoAnimBR = new Animation(upperLegAnimValues,numUpperLegAnimValues,upperLegMode,animTimeSharedTop);
-  upperLegServoAnimBL = new Animation(upperLegAnimValues,numUpperLegAnimValues,upperLegMode,animTimeSharedTop);
+  //Left legs
+  upperLegServoAnimFL = new Animation(upperLegAnimValuesF,numUpperLegAnimValuesF,upperLegMode,animTimeSharedF);
+  lowerLegServoAnimFL = new Animation(lowerLegAnimValuesF,numLowerLegAnimValuesF,lowerLegMode,animTimeSharedF);
+  upperLegServoAnimBL = new Animation(upperLegAnimValuesB,numUpperLegAnimValuesB,upperLegMode,animTimeSharedB);
+  lowerLegServoAnimBL = new Animation(lowerLegAnimValuesB,numLowerLegAnimValuesB,lowerLegMode,animTimeSharedB);
   
-  lowerLegServoAnimFR = new Animation(lowerLegAnimValues,numLowerLegAnimValues,lowerLegMode,animTimeSharedBottom);
-  lowerLegServoAnimFL = new Animation(lowerLegAnimValues,numLowerLegAnimValues,lowerLegMode,animTimeSharedBottom);
-  lowerLegServoAnimBR = new Animation(lowerLegAnimValues,numLowerLegAnimValues,lowerLegMode,animTimeSharedBottom);
-  lowerLegServoAnimBL = new Animation(lowerLegAnimValues,numLowerLegAnimValues,lowerLegMode,animTimeSharedBottom);
+  //Right legs
+  upperLegServoAnimFR = new Animation(upperLegAnimValuesF,numUpperLegAnimValuesF,upperLegMode,animTimeSharedF);
+  lowerLegServoAnimFR = new Animation(lowerLegAnimValuesF,numLowerLegAnimValuesF,lowerLegMode,animTimeSharedF);
+  upperLegServoAnimBR = new Animation(upperLegAnimValuesB,numUpperLegAnimValuesB,upperLegMode,animTimeSharedB);
+  lowerLegServoAnimBR = new Animation(lowerLegAnimValuesB,numLowerLegAnimValuesB,lowerLegMode,animTimeSharedB);
   
-  upperLegServoAnimFL->currT += 0.8f;
-  lowerLegServoAnimFL->currT += 0.8f;
-  upperLegServoAnimBL->currT += 0.6f;
-  lowerLegServoAnimBL->currT += 0.6f;
+  upperLegServoAnimFL->endPauseTime = pauseTimeF;
+  lowerLegServoAnimFL->endPauseTime = pauseTimeF;
+  upperLegServoAnimFR->endPauseTime = pauseTimeF;
+  lowerLegServoAnimFR->endPauseTime = pauseTimeF;
   
-  upperLegServoAnimFR->currT += 0.2f;
-  lowerLegServoAnimFR->currT += 0.2f;
-  upperLegServoAnimBR->currT += 0.0f;
-  lowerLegServoAnimBR->currT += 0.0f;
+  upperLegServoAnimBL->endPauseTime = pauseTimeB;
+  lowerLegServoAnimBL->endPauseTime = pauseTimeB;
+  upperLegServoAnimBR->endPauseTime = pauseTimeB;
+  lowerLegServoAnimBR->endPauseTime = pauseTimeB;
+
+  //Left legs
+  upperLegServoAnimFL->currT += frontOffset;
+  lowerLegServoAnimFL->currT += frontOffset + frontOffsetLower;
+  upperLegServoAnimBL->currT += backOffset;
+  lowerLegServoAnimBL->currT += backOffset + backOffsetLower;
+
+  //Right legs
+  upperLegServoAnimFR->currT += frontOffset + rightSideOffset;
+  lowerLegServoAnimFR->currT += frontOffset + rightSideOffset + frontOffsetLower;
+  upperLegServoAnimBR->currT += backOffset + rightSideOffset;
+  lowerLegServoAnimBR->currT += backOffset + rightSideOffset + backOffsetLower;
+  
+  //Left legs
+  upperLegServoAnimFL->animSpeed = animSpeed;
+  lowerLegServoAnimFL->animSpeed = animSpeed;
+  upperLegServoAnimBL->animSpeed = animSpeed;
+  lowerLegServoAnimBL->animSpeed = animSpeed;
+
+  //Right legs
+  upperLegServoAnimFR->animSpeed = animSpeed;
+  lowerLegServoAnimFR->animSpeed = animSpeed;
+  upperLegServoAnimBR->animSpeed = animSpeed;
+  lowerLegServoAnimBR->animSpeed = animSpeed;
   
   servoUpperFR.attach(4);
   servoUpperFL.attach(5);
   lastTimeMillis = currTimeMillis;
   
   //Update animations
+  //Right legs
   upperLegServoAnimFR->Update(timeDelta); 
+  lowerLegServoAnimFR->Update(timeDelta);
+  upperLegServoAnimBR->Update(timeDelta); 
+  lowerLegServoAnimBR->Update(timeDelta);
+  
+  //Left legs
   upperLegServoAnimFL->Update(timeDelta);
-  upperLegServoAnimBR->Update(timeDelta); 
-  upperLegServoAnimBL->Update(timeDelta);    
-  
-  lowerLegServoAnimFR->Update(timeDelta);
   lowerLegServoAnimFL->Update(timeDelta);
-  lowerLegServoAnimBR->Update(timeDelta);
-  lowerLegServoAnimBL->Update(timeDelta);
+  upperLegServoAnimBL->Update(timeDelta);
+  lowerLegServoAnimBL->Update(timeDelta);  
   
   float topFrontRightAnimVal =  upperLegServoAnimFR->CalcAnimVal();
   float topFrontLeftAnimVal = -upperLegServoAnimFL->CalcAnimVal();
   float bottomBackRightAnimVal =  lowerLegServoAnimBR->CalcAnimVal();
   float bottomBackLeftAnimVal = -lowerLegServoAnimBL->CalcAnimVal();
   
+  //Right legs
   topFrontRightAnimVal += 90.0f;
+  bottomFrontRightAnimVal += 90.0f;
+  topBackRightAnimVal += 90.0f;
+  bottomBackRightAnimVal += 90.0f;
+  
+  //Left legs
   topFrontLeftAnimVal += 90.0f;
-  topBackRightAnimVal += 90.0f;
+  bottomFrontLeftAnimVal += 90.0f;
   topBackLeftAnimVal += 90.0f;
-  
-  bottomFrontRightAnimVal += 90.0f;
-  bottomFrontLeftAnimVal += 90.0f;
-  bottomBackRightAnimVal += 90.0f;
-  bottomBackLeftAnimVal += 90.0f;
+  bottomBackLeftAnimVal += 90.0f;  
   
   //Set servo values from animations
   servoUpperFR.write(topFrontRightAnimVal);
+  servoLowerFR.write(bottomFrontRightAnimVal);
+  servoUpperBR.write(topBackRightAnimVal);
+  servoLowerBR.write(bottomBackRightAnimVal);
+  
   servoUpperFL.write(topFrontLeftAnimVal);
-  servoUpperBR.write(topBackRightAnimVal);
+  servoLowerFL.write(bottomFrontLeftAnimVal);
   servoUpperBL.write(topBackLeftAnimVal);
-  
-  servoLowerFR.write(bottomFrontRightAnimVal);
-  servoLowerFL.write(bottomFrontLeftAnimVal);
-  servoLowerBR.write(bottomBackRightAnimVal);
   servoLowerBL.write(bottomBackLeftAnimVal);
-  
 }