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); }
//=========================================================================== 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(); }
//=========================================================================== 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(); }