void changeLength(float tA, float tB) { float currSpeedA = speed(&motorA); float currSpeedB = speed(&motorB); setSpeed(&motorA,0.0); setSpeed(&motorB,0.0); moveTo(&motorA,tA); moveTo(&motorB,tB); if (!usingAcceleration) { // The moveTo() function changes the speed in order to do a proper // acceleration. This counteracts it. Ha. if (speed(&motorA) < 0) currSpeedA = -currSpeedA; if (speed(&motorB) < 0) currSpeedB = -currSpeedB; setSpeed(&motorA,currSpeedA); setSpeed(&motorB,currSpeedB); } while (distanceToGo(&motorA) != 0 || distanceToGo(&motorB) != 0) { //impl_runBackgroundProcesses(); if (usingAcceleration) { run(&motorA); run(&motorB); } else { //Serial.print("Run speed.."); //Serial.println(motorA.speed()); runSpeedToPosition(&motorA); runSpeedToPosition(&motorB); } } }
/** * \par Function * update * \par Description * The Stepper loop function, used to move the stepper. * \param[in] * None * \par Output * None * \par Return * None * \par Others * None */ void MeStepperOnBoard::update(void) { if(_mode == 0) { runSpeed(); } else { long dist = distanceToGo(); if(dist==0) { if(_moving) { _moving = false; _callback(_slot, _extId); } } runSpeedToPosition(); } }