import org.littletonrobotics.junction.Logger;
+import edu.wpi.first.math.controller.PIDController;
+import edu.wpi.first.units.measure.Angle;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
import edu.wpi.first.wpilibj2.command.InstantCommand;
import edu.wpi.first.wpilibj2.command.SubsystemBase;
private SpindexerState state = SpindexerState.STOPPED;
private boolean reversing = false;
private SpindexerIOInputsAutoLogged inputs = new SpindexerIOInputsAutoLogged();
+
public Spindexer() {
updateInputs();
MAX,
REVERSE,
STOPPED,
+ RESET,
CUSTOM,
}
updateInputs();
Logger.processInputs("Spindexer", inputs);
+ if (resetPos == null) {
+ resetPos = motor.getPosition().getValueAsDouble();
+ resetPID.reset();
+ }
+
if (state == SpindexerState.MAX) {
motor.set(SpindexerConstants.spindexerMaxPower);
reversing = false;
} else if (state == SpindexerState.STOPPED) {
motor.set(0.0);
reversing = false;
+ } else if (state == SpindexerState.RESET && resetPos != null) {
+ motor.set(resetPID.calculate(motor.getPosition().getValueAsDouble(), resetPos));
} else {
motor.set(power);
reversing = false;
state = SpindexerState.CUSTOM;
}
+ public void resetSpindexer() {
+ state = SpindexerState.RESET;
+ }
+
+ public void resetResetAngle() {
+ resetPos = null;
+ }
+
public double getStatorCurrent() {
return inputs.spindexerCurrent;
}
Logger.processInputs("Spindexer", inputs);
}
+ private Double resetPos;
+ private PIDController resetPID = new PIDController(0.5, 0.1, 0);
+
+
+
}