void SkyPointer::goTo(uint16_t az, uint16_t alt) {
    int16_t delta;
    uint16_t pos;

    digitalWrite(ENABLE, LOW);
    azMotor.setMaxSpeed(GOTO_SPEED);
    altMotor.setMaxSpeed(GOTO_SPEED);

    // AZ motor
    az = MOD(az, USTEPS_REV);
    pos = MOD(azMotor.currentPosition(), USTEPS_REV);
    delta = calcSteps(pos, az);
    azMotor.move(delta);

    // ALT motor
    alt = MOD(alt, USTEPS_REV);
    pos = MOD(altMotor.currentPosition(), USTEPS_REV);
    delta = calcSteps(pos, alt);
    altMotor.move(delta);
    laser(true);
}
Example #2
0
//===========================================================================
void Hysteresis::Set( float x_mm, float y_mm, float z_mm, float e_mm )
{
  m_hysteresis_mm[X_AXIS] = x_mm;
  m_hysteresis_mm[Y_AXIS] = y_mm;
  m_hysteresis_mm[Z_AXIS] = z_mm;
  m_hysteresis_mm[E_AXIS] = e_mm;
  m_hysteresis_bits = ((m_hysteresis_mm[X_AXIS]!=0.0f)?(1<<X_AXIS):0)
                    | ((m_hysteresis_mm[Y_AXIS]!=0.0f)?(1<<Y_AXIS):0)
                    | ((m_hysteresis_mm[Z_AXIS]!=0.0f)?(1<<Z_AXIS):0)
                    | ((m_hysteresis_mm[E_AXIS]!=0.0f)?(1<<E_AXIS):0);
  calcSteps();
}
Example #3
0
//===========================================================================
void Hysteresis::SetAxis( int axis, float mm )
{
  m_hysteresis_mm[axis] = mm;
  if( mm != 0.0f )
  {
    m_hysteresis_bits |= (1<<axis);
  }
  else
  {
    m_hysteresis_bits &= ~(1<<axis);
  }
  calcSteps();
}