public final static double MAX_ACCELERATION = 0.3;
public final static double RADIUS = 0.3;
public final static double CLIMB_HEIGHT = 4;
+ public final static double STRONG_CURRENT = 5.0;
+ public final static double WEAK_CURRENT = 4.0;
+ public final static double OFFSET = 100.0;
+ public final static double CLIMB_OFFSET = 45.0;
}
public class LinearClimb extends SubsystemBase{
private TalonFX motor;
private boolean calibrating = false;
+ double counter = 0;
+ double downPosition = ClimbConstants.OFFSET;
+ double upPosition = 0;
+ double climbPosition = ClimbConstants.CLIMB_OFFSET;
private static PIDController pid = new PIDController(0.1, 0, 0);
SmartDashboard.putData("Go Down", new InstantCommand(() -> goDown()));
SmartDashboard.putData("Climb", new InstantCommand(() -> climb()));
SmartDashboard.putData("Hardstop Calibrate", new InstantCommand(() -> hardstopCalibration()));
+ SmartDashboard.putData("Stop Calibrating", new InstantCommand(() -> stopCalibrating()));
SmartDashboard.putNumber("Position", getPosition());
motor.setPosition(0);
}
public void goUp() {
- setSetpoint(0);
+ setSetpoint(upPosition);
}
public void goDown() {
- setSetpoint(0);
+ setSetpoint(downPosition);
}
public void climb() {
- setSetpoint(ClimbConstants.CLIMB_HEIGHT);
+ setSetpoint(climbPosition);
}
public void periodic() {
motor.set(power);
SmartDashboard.putNumber("Position", getPosition());
}else{
+ if(counter > 250){
+ stopCalibrating();
+ }
motor.set(0.15);
+ counter += 1;
}
-
}
public void setCurrentLimits(double limit){
TalonFXConfiguration config = new TalonFXConfiguration();
motor.getConfigurator().apply(config);
}
public void hardstopCalibration(){
- calibrating = !calibrating;
+ calibrating = true;
+ counter = 0;
+ setCurrentLimits(ClimbConstants.WEAK_CURRENT);
+ }
+ public void stopCalibrating(){
+ downPosition = motor.getPosition().getValueAsDouble();
+ upPosition = downPosition - ClimbConstants.OFFSET;
+ climbPosition = upPosition + ClimbConstants.CLIMB_OFFSET;
+ setSetpoint(downPosition);
+ calibrating = false;
+ counter = 0;
+ setCurrentLimits(ClimbConstants.STRONG_CURRENT);
}
}
\ No newline at end of file