示例#1
0
文件: pixel.c 项目: Xctickle/pss32
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();  
  }
}