2026-01-29 18:27:18 -08:00
|
|
|
package frc4388.robot.subsystems.climber;
|
|
|
|
|
|
2026-02-22 14:02:31 -07:00
|
|
|
import static edu.wpi.first.units.Units.Inches;
|
|
|
|
|
|
2026-01-29 18:27:18 -08:00
|
|
|
import org.littletonrobotics.junction.Logger;
|
|
|
|
|
|
|
|
|
|
import edu.wpi.first.wpilibj2.command.SubsystemBase;
|
|
|
|
|
|
|
|
|
|
public class Climber extends SubsystemBase {
|
2026-02-22 14:02:31 -07:00
|
|
|
public ClimberIO io;
|
2026-01-29 18:27:18 -08:00
|
|
|
ClimberStateAutoLogged state = new ClimberStateAutoLogged();
|
|
|
|
|
|
|
|
|
|
public Climber(
|
2026-02-11 15:18:12 -07:00
|
|
|
ClimberIO io
|
2026-01-29 18:27:18 -08:00
|
|
|
) {
|
|
|
|
|
this.io = io;
|
|
|
|
|
}
|
|
|
|
|
|
2026-02-22 14:02:31 -07:00
|
|
|
ClimberMode mode = ClimberMode.Retracting;
|
2026-01-29 18:27:18 -08:00
|
|
|
|
2026-02-22 14:02:31 -07:00
|
|
|
public enum ClimberMode {
|
|
|
|
|
Extended,
|
|
|
|
|
Retracting,
|
|
|
|
|
}
|
2026-01-29 18:27:18 -08:00
|
|
|
|
2026-02-22 14:02:31 -07:00
|
|
|
public void deploy() {
|
|
|
|
|
mode = ClimberMode.Extended;
|
|
|
|
|
}
|
2026-01-29 18:27:18 -08:00
|
|
|
|
2026-02-22 14:02:31 -07:00
|
|
|
public void retract() {
|
|
|
|
|
mode = ClimberMode.Retracting;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void toggleDeployed() {
|
|
|
|
|
switch (mode) {
|
|
|
|
|
case Extended:
|
|
|
|
|
mode = ClimberMode.Retracting;
|
|
|
|
|
break;
|
|
|
|
|
case Retracting:
|
|
|
|
|
mode = ClimberMode.Extended;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-01-29 18:27:18 -08:00
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void periodic() {
|
|
|
|
|
|
2026-02-22 14:02:31 -07:00
|
|
|
switch (mode) {
|
|
|
|
|
case Extended:
|
|
|
|
|
io.setClimberDistance(state, Inches.of(ClimberConstants.CLIMBER_RETRACT_SPEED.get()));
|
|
|
|
|
break;
|
|
|
|
|
case Retracting:
|
|
|
|
|
io.setPercentOutput(state, ClimberConstants.CLIMBER_RETRACT_SPEED.get());
|
|
|
|
|
break;
|
|
|
|
|
}
|
2026-01-29 18:27:18 -08:00
|
|
|
|
|
|
|
|
Logger.processInputs("Climber", state);
|
|
|
|
|
|
|
|
|
|
io.updateInputs(state);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|