From c9e21d478c1ab730119f837d86f3be149c557ec0 Mon Sep 17 00:00:00 2001 From: k Date: Thu, 17 Sep 2026 18:29:26 -0700 Subject: [PATCH 1/6] add subsystem file --- .../frc/robot/subsystems/ClimbSubsystem.java | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/main/java/frc/robot/subsystems/ClimbSubsystem.java diff --git a/src/main/java/frc/robot/subsystems/ClimbSubsystem.java b/src/main/java/frc/robot/subsystems/ClimbSubsystem.java new file mode 100644 index 0000000..7089e94 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/ClimbSubsystem.java @@ -0,0 +1,70 @@ +package frc.robot.subsystems.index; + +import com.ctre.phoenix6.configs.TalonFXConfiguration; +import com.ctre.phoenix6.configs.TalonFXConfigurator; +import com.ctre.phoenix6.hardware.TalonFX; +import com.ctre.phoenix6.signals.NeutralModeValue; +import edu.wpi.first.units.measure.Current; +import edu.wpi.first.wpilibj.RobotBase; +import edu.wpi.first.wpilibj2.command.SubsystemBase; +import frc.robot.Hardware; + +public class ClimbSubsystem extends SubsystemBase { + public final CLIMB_MOTOR_ID = 0; //placeholder + + private final TalonFX climbMotor; + + public final double TARGET_POS_START = 0.0; + public final double TARGET_POS_END = 0.0; + + private final FlywheelSim motorSim; + + public Climb() { + climbMotor = new TalonFX(Hardware.CLIMB_MOTOR_ID); + climbConfig(); + if (RobotBase.isSimulation()) { + motorSim = null; //add sim later + } else { + motorSim = null; + } + } + + public void climbConfig() { + + TalonFXConfigurator cfg = climbMotor.getConfigurator(); + TalonFXConfiguration talonFXConfiguration = new TalonFXConfiguration(); + + talonFXConfiguration.MotorOutput.NeutralMode = NeutralModeValue.Coast; + + // enabling current limits + talonFXConfiguration.CurrentLimits.StatorCurrentLimit = 50; + talonFXConfiguration.CurrentLimits.StatorCurrentLimitEnable = true; + talonFXConfiguration.CurrentLimits.SupplyCurrentLimit = 30; + talonFXConfiguration.CurrentLimits.SupplyCurrentLimitEnable = true; + talonFXConfiguration.CurrentLimits.SupplyCurrentLowerLimit = 0; + talonFXConfiguration.Slot0.kA = 0.5; + talonFXConfiguration.Slot0.kS = 2.2; + talonFXConfiguration.Slot0.kP = 10; + + cfg.apply(talonFXConfiguration); + } + + public void setPos(double pos) { + climbMotor.setControl(request.withPosition(pos)); + } + + public void stopMotor() { + climbMotor.stopMotor(); + } + + @Override + public void simulationPeriodic() { + // motorSim.setInput(climbMotor.getSimState().getMotorVoltage()); + // motorSim.update(TimedRobot.kDefaultPeriod); // every 20 ms + } + + @Override + public void periodic() { + //add stuff later + } +} \ No newline at end of file From 2916c6450963c35cf55808270169629314a92c96 Mon Sep 17 00:00:00 2001 From: k Date: Thu, 17 Sep 2026 18:33:04 -0700 Subject: [PATCH 2/6] add to main subsystems file --- src/main/java/frc/robot/Subsystems.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/frc/robot/Subsystems.java b/src/main/java/frc/robot/Subsystems.java index 71f4545..3281307 100644 --- a/src/main/java/frc/robot/Subsystems.java +++ b/src/main/java/frc/robot/Subsystems.java @@ -5,12 +5,14 @@ import edu.wpi.first.wpilibj.smartdashboard.Mechanism2d; import frc.robot.generated.AlphaTunerConstants; import frc.robot.subsystems.drivebase.CommandSwerveDrivetrain; +import frc.robot.subsystems.ClimbSubsystem; public class Subsystems { // _ENABLED constants go here public static class SubsystemConstants { public static final boolean DRIVEBASE_ENABLED = true; + public static final boolean CLIMB_ENABLED = true; } public final CommandSwerveDrivetrain drivebaseSubsystem; @@ -33,5 +35,12 @@ public Subsystems(Mechanism2d mechanism2d) { } else { drivebaseSubsystem = null; } + + if (CLIMB_ENABLED) { + climbSubsystem = new ClimbSubsystem(); + + } else { + climbSubsystem = null; + } } } From f892e9b28755eb34b2f4bb139c2e8f40b74ebcd3 Mon Sep 17 00:00:00 2001 From: k Date: Thu, 24 Sep 2026 18:29:16 -0700 Subject: [PATCH 3/6] Update ClimbSubsystem.java --- .../frc/robot/subsystems/ClimbSubsystem.java | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/main/java/frc/robot/subsystems/ClimbSubsystem.java b/src/main/java/frc/robot/subsystems/ClimbSubsystem.java index 7089e94..9a0d215 100644 --- a/src/main/java/frc/robot/subsystems/ClimbSubsystem.java +++ b/src/main/java/frc/robot/subsystems/ClimbSubsystem.java @@ -1,5 +1,3 @@ -package frc.robot.subsystems.index; - import com.ctre.phoenix6.configs.TalonFXConfiguration; import com.ctre.phoenix6.configs.TalonFXConfigurator; import com.ctre.phoenix6.hardware.TalonFX; @@ -10,22 +8,23 @@ import frc.robot.Hardware; public class ClimbSubsystem extends SubsystemBase { - public final CLIMB_MOTOR_ID = 0; //placeholder + public final int CLIMB_MOTOR_ID = 0; //placeholder private final TalonFX climbMotor; - + + private double targetPos; public final double TARGET_POS_START = 0.0; public final double TARGET_POS_END = 0.0; - private final FlywheelSim motorSim; + //private final FlywheelSim motorSim; //add sim class later - public Climb() { - climbMotor = new TalonFX(Hardware.CLIMB_MOTOR_ID); + public ClimbSubsystem() { + climbMotor = new TalonFX(CLIMB_MOTOR_ID); climbConfig(); if (RobotBase.isSimulation()) { - motorSim = null; //add sim later + //motorSim = null; //add sim later } else { - motorSim = null; + //motorSim = null; } } @@ -48,9 +47,13 @@ public void climbConfig() { cfg.apply(talonFXConfiguration); } - - public void setPos(double pos) { - climbMotor.setControl(request.withPosition(pos)); + + public Command setPos(double pos) { + return runOnce( + () -> { + climbMotor.setPosition(pos); + targetPos = pos; + }); } public void stopMotor() { @@ -67,4 +70,4 @@ public void simulationPeriodic() { public void periodic() { //add stuff later } -} \ No newline at end of file +} From 9b431b350c37ab1418d4989e213442da29d56c53 Mon Sep 17 00:00:00 2001 From: k Date: Thu, 24 Sep 2026 18:32:55 -0700 Subject: [PATCH 4/6] Update ClimbSubsystem.java --- src/main/java/frc/robot/subsystems/ClimbSubsystem.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/frc/robot/subsystems/ClimbSubsystem.java b/src/main/java/frc/robot/subsystems/ClimbSubsystem.java index 9a0d215..8057faa 100644 --- a/src/main/java/frc/robot/subsystems/ClimbSubsystem.java +++ b/src/main/java/frc/robot/subsystems/ClimbSubsystem.java @@ -1,3 +1,4 @@ +import com.ctre.phoenix6.StatusCode; import com.ctre.phoenix6.configs.TalonFXConfiguration; import com.ctre.phoenix6.configs.TalonFXConfigurator; import com.ctre.phoenix6.hardware.TalonFX; @@ -45,7 +46,14 @@ public void climbConfig() { talonFXConfiguration.Slot0.kS = 2.2; talonFXConfiguration.Slot0.kP = 10; - cfg.apply(talonFXConfiguration); + StatusCode status = StatusCode.StatusCodeNotInitialized; + for (int i = 0; i < 5; ++i) { + status = climbMotor.getConfigurator().apply(talonFXConfigs); + if (status.isOK()) break; + } + if (!status.isOK()) { + DriverStation.reportError("Failed to apply ClimbMotor configs: " + status, false); + } } public Command setPos(double pos) { From d420939edccc7bab981cebac938cb77ba864c909 Mon Sep 17 00:00:00 2001 From: k Date: Thu, 24 Sep 2026 18:35:20 -0700 Subject: [PATCH 5/6] Update Subsystems.java --- src/main/java/frc/robot/Subsystems.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/frc/robot/Subsystems.java b/src/main/java/frc/robot/Subsystems.java index a5bde15..b22ef52 100644 --- a/src/main/java/frc/robot/Subsystems.java +++ b/src/main/java/frc/robot/Subsystems.java @@ -2,6 +2,7 @@ import static frc.robot.Subsystems.SubsystemConstants.DRIVEBASE_ENABLED; import static frc.robot.Subsystems.SubsystemConstants.INTAKE_ENABLED; +import static frc.robot.Subsystems.SubsystemConstants.CLIMB_ENABLED; import edu.wpi.first.wpilibj.smartdashboard.Mechanism2d; import frc.robot.generated.AlphaTunerConstants; From f099c51189a732e61452807d804e1f9f3f841603 Mon Sep 17 00:00:00 2001 From: k Date: Thu, 24 Sep 2026 18:36:44 -0700 Subject: [PATCH 6/6] Update ClimbSubsystem.java --- .../java/frc/robot/subsystems/ClimbSubsystem.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/frc/robot/subsystems/ClimbSubsystem.java b/src/main/java/frc/robot/subsystems/ClimbSubsystem.java index 8057faa..fc1dd92 100644 --- a/src/main/java/frc/robot/subsystems/ClimbSubsystem.java +++ b/src/main/java/frc/robot/subsystems/ClimbSubsystem.java @@ -9,7 +9,7 @@ import frc.robot.Hardware; public class ClimbSubsystem extends SubsystemBase { - public final int CLIMB_MOTOR_ID = 0; //placeholder + public final int CLIMB_MOTOR_ID = 0; // TODO: placeholder private final TalonFX climbMotor; @@ -17,15 +17,16 @@ public class ClimbSubsystem extends SubsystemBase { public final double TARGET_POS_START = 0.0; public final double TARGET_POS_END = 0.0; - //private final FlywheelSim motorSim; //add sim class later + // TODO: private final FlywheelSim motorSim; // TODO: add sim class later public ClimbSubsystem() { climbMotor = new TalonFX(CLIMB_MOTOR_ID); climbConfig(); if (RobotBase.isSimulation()) { - //motorSim = null; //add sim later + // TODO: add sim later + // motorSim = null; } else { - //motorSim = null; + // motorSim = null; } } @@ -70,12 +71,13 @@ public void stopMotor() { @Override public void simulationPeriodic() { + // TODO: add sim periodic // motorSim.setInput(climbMotor.getSimState().getMotorVoltage()); // motorSim.update(TimedRobot.kDefaultPeriod); // every 20 ms } @Override public void periodic() { - //add stuff later + // TODO: add stuff later } }