From 9145fc9c351b39ff4560053f16c386b7c114baff Mon Sep 17 00:00:00 2001 From: blaze-developer Date: Tue, 31 Mar 2026 21:27:41 -0700 Subject: [PATCH] Add temperature stash --- .../frc/robot/subsystems/hopper/HopperIO.java | 4 +++ .../subsystems/hopper/HopperIOTalonFX.java | 29 +++++++++++++++---- .../frc/robot/subsystems/intake/IntakeIO.java | 5 ++++ .../subsystems/intake/IntakeIOTalonFX.java | 13 +++++++-- .../robot/subsystems/shooter/ShooterIO.java | 3 ++ .../subsystems/shooter/ShooterIOTalonFX.java | 16 +++++++++- 6 files changed, 61 insertions(+), 9 deletions(-) diff --git a/src/main/java/frc/robot/subsystems/hopper/HopperIO.java b/src/main/java/frc/robot/subsystems/hopper/HopperIO.java index 87c044c5..eac2494b 100644 --- a/src/main/java/frc/robot/subsystems/hopper/HopperIO.java +++ b/src/main/java/frc/robot/subsystems/hopper/HopperIO.java @@ -1,5 +1,6 @@ package frc.robot.subsystems.hopper; import static edu.wpi.first.units.Units.Amps; +import static edu.wpi.first.units.Units.Celsius; import static edu.wpi.first.units.Units.DegreesPerSecond; import static edu.wpi.first.units.Units.DegreesPerSecondPerSecond; import static edu.wpi.first.units.Units.Volts; @@ -9,6 +10,7 @@ import edu.wpi.first.units.measure.AngularAcceleration; import edu.wpi.first.units.measure.AngularVelocity; import edu.wpi.first.units.measure.Current; +import edu.wpi.first.units.measure.Temperature; import edu.wpi.first.units.measure.Voltage; public interface HopperIO { @@ -19,12 +21,14 @@ public static class HopperIOInputs { public AngularAcceleration feederAcceleration = DegreesPerSecondPerSecond.of(0) ; public Voltage feederVoltage = Volts.of(0.0); public Current feederCurrent = Amps.of(0.0); + public Temperature feederTemp = Celsius.zero(); public boolean scramblerConnected = false; public AngularVelocity scramblerVelocity = DegreesPerSecond.of(0); public AngularAcceleration scramblerAcceleration = DegreesPerSecondPerSecond.of(0) ; public Voltage scramblerVoltage = Volts.of(0.0); public Current scramblerCurrent = Amps.of(0.0); + public Temperature scramblerTemp = Celsius.zero(); } public default void updateInputs(HopperIOInputs inputs) {} diff --git a/src/main/java/frc/robot/subsystems/hopper/HopperIOTalonFX.java b/src/main/java/frc/robot/subsystems/hopper/HopperIOTalonFX.java index 1f78346c..51a0fb72 100644 --- a/src/main/java/frc/robot/subsystems/hopper/HopperIOTalonFX.java +++ b/src/main/java/frc/robot/subsystems/hopper/HopperIOTalonFX.java @@ -20,6 +20,7 @@ import edu.wpi.first.units.measure.AngularAcceleration; import edu.wpi.first.units.measure.AngularVelocity; import edu.wpi.first.units.measure.Current; +import edu.wpi.first.units.measure.Temperature; import edu.wpi.first.units.measure.Voltage; public class HopperIOTalonFX implements HopperIO { @@ -40,13 +41,15 @@ public class HopperIOTalonFX implements HopperIO { private final StatusSignal feederAngularVelocitySignal; private final StatusSignal feederAngularAccelerationSignal ; private final StatusSignal feederVoltageSignal; - private final StatusSignal feederCurrentSignal; + private final StatusSignal feederCurrentSignal; + private final StatusSignal feederTemp; //Scrambler Status Signals private final StatusSignal scramblerAngularVelocitySignal; private final StatusSignal scramblerAngularAccelerationSignal ; private final StatusSignal scramblerVoltageSignal; private final StatusSignal scramblerCurrentSignal; + private final StatusSignal scramblerTemp; private final Debouncer feederConnectedDebounce = new Debouncer(0.5, DebounceType.kFalling); private final Debouncer scramblerConnectedDebounce = new Debouncer(0.5, DebounceType.kFalling); @@ -75,7 +78,8 @@ public HopperIOTalonFX(CANBus canBus) { feederAngularVelocitySignal = feederMotor.getVelocity(); feederAngularAccelerationSignal = feederMotor.getAcceleration() ; feederVoltageSignal = feederMotor.getMotorVoltage(); - feederCurrentSignal = feederMotor.getSupplyCurrent(); + feederCurrentSignal = feederMotor.getSupplyCurrent(); + feederTemp = feederMotor.getDeviceTemp(); // Scrambler Motor Configuration scramblerMotor = new TalonFX(HopperConstants.scramblerMotorCANID); @@ -96,14 +100,15 @@ public HopperIOTalonFX(CANBus canBus) { scramblerAngularAccelerationSignal = scramblerMotor.getAcceleration() ; scramblerVoltageSignal = scramblerMotor.getMotorVoltage(); scramblerCurrentSignal = scramblerMotor.getSupplyCurrent(); + scramblerTemp = scramblerMotor.getDeviceTemp(); BaseStatusSignal.setUpdateFrequencyForAll(50.0, - feederAngularVelocitySignal, feederVoltageSignal, feederCurrentSignal, feederAngularAccelerationSignal); + feederAngularVelocitySignal, feederVoltageSignal, feederCurrentSignal, feederAngularAccelerationSignal, feederTemp); feederMotor.optimizeBusUtilization(); BaseStatusSignal.setUpdateFrequencyForAll(50.0, - scramblerAngularVelocitySignal, scramblerVoltageSignal, scramblerCurrentSignal, scramblerAngularAccelerationSignal); + scramblerAngularVelocitySignal, scramblerVoltageSignal, scramblerCurrentSignal, scramblerAngularAccelerationSignal, scramblerTemp); scramblerMotor.optimizeBusUtilization(); } @@ -111,22 +116,34 @@ public HopperIOTalonFX(CANBus canBus) { @Override public void updateInputs(HopperIOInputs inputs) { StatusCode feederStatus = BaseStatusSignal.refreshAll( - feederAngularVelocitySignal, feederVoltageSignal, feederCurrentSignal); + feederAngularVelocitySignal, + feederAngularAccelerationSignal, + feederVoltageSignal, + feederCurrentSignal, + feederTemp + ); StatusCode scramblerStatus = BaseStatusSignal.refreshAll( - scramblerAngularVelocitySignal, scramblerVoltageSignal, scramblerCurrentSignal); + scramblerAngularVelocitySignal, + scramblerAngularAccelerationSignal, + scramblerVoltageSignal, + scramblerCurrentSignal, + scramblerTemp + ); inputs.feederConnected = feederConnectedDebounce.calculate(feederStatus.isOK()); inputs.feederVelocity = feederAngularVelocitySignal.getValue(); inputs.feederAcceleration = feederAngularAccelerationSignal.getValue() ; inputs.feederVoltage = feederVoltageSignal.getValue(); inputs.feederCurrent = feederCurrentSignal.getValue(); + inputs.feederTemp = feederTemp.getValue(); inputs.scramblerConnected = scramblerConnectedDebounce.calculate(scramblerStatus.isOK()); inputs.scramblerVelocity = scramblerAngularVelocitySignal.getValue(); inputs.scramblerAcceleration = scramblerAngularAccelerationSignal.getValue() ; inputs.scramblerVoltage = scramblerVoltageSignal.getValue(); inputs.scramblerCurrent = scramblerCurrentSignal.getValue(); + inputs.scramblerTemp = scramblerTemp.getValue(); } @Override diff --git a/src/main/java/frc/robot/subsystems/intake/IntakeIO.java b/src/main/java/frc/robot/subsystems/intake/IntakeIO.java index 407aac66..1c133bdc 100644 --- a/src/main/java/frc/robot/subsystems/intake/IntakeIO.java +++ b/src/main/java/frc/robot/subsystems/intake/IntakeIO.java @@ -4,10 +4,13 @@ import edu.wpi.first.units.measure.Angle; import edu.wpi.first.units.measure.AngularVelocity; import edu.wpi.first.units.measure.Current; +import edu.wpi.first.units.measure.Temperature; + import static edu.wpi.first.units.Units.Volts; import static edu.wpi.first.units.Units.Degrees; import static edu.wpi.first.units.Units.DegreesPerSecond; import static edu.wpi.first.units.Units.Amps; +import static edu.wpi.first.units.Units.Celsius; import org.littletonrobotics.junction.AutoLog; @@ -22,11 +25,13 @@ public class IntakeIOInputs{ public AngularVelocity pivotCancoderVelocity = DegreesPerSecond.of(0); public Voltage pivotAppliedVolts = Volts.of(0); public Current pivotCurrentAmps = Amps.of(0); + public Temperature pivotTemp = Celsius.zero(); public boolean rollerConnected = false; public AngularVelocity rollerAngularVelocity = DegreesPerSecond.of(0); public Voltage rollerAppliedVolts = Volts.of(0); public Current rollerCurrentAmps = Amps.of(0); + public Temperature rollerTemp = Celsius.zero(); } public default void updateInputs(IntakeIOInputsAutoLogged inputs) {} diff --git a/src/main/java/frc/robot/subsystems/intake/IntakeIOTalonFX.java b/src/main/java/frc/robot/subsystems/intake/IntakeIOTalonFX.java index 7af39896..6cd801db 100644 --- a/src/main/java/frc/robot/subsystems/intake/IntakeIOTalonFX.java +++ b/src/main/java/frc/robot/subsystems/intake/IntakeIOTalonFX.java @@ -30,6 +30,7 @@ import edu.wpi.first.units.measure.Angle; import edu.wpi.first.units.measure.AngularVelocity; import edu.wpi.first.units.measure.Current; +import edu.wpi.first.units.measure.Temperature; import edu.wpi.first.units.measure.Voltage; @@ -59,6 +60,7 @@ public class IntakeIOTalonFX implements IntakeIO { private StatusSignal pivotAngularVelocitySignal; private StatusSignal pivotCurrentAmpsSignal; private StatusSignal pivotAppliedVoltsSignal; + private StatusSignal pivotTemp; private StatusSignal pivotCancoderPositionSignal; private StatusSignal pivotCancoderVelocitySignal; @@ -66,6 +68,7 @@ public class IntakeIOTalonFX implements IntakeIO { private StatusSignal rollerAngularVelocitySignal; private StatusSignal rollerAppliedVoltsSignal; private StatusSignal rollerCurrentAmpsSignal; + private StatusSignal rollerTemp; public IntakeIOTalonFX(CANBus canbus) { // Initialize motor objects @@ -157,6 +160,8 @@ public IntakeIOTalonFX(CANBus canbus) { pivotAppliedVoltsSignal = pivotMotor.getMotorVoltage(); rollerCurrentAmpsSignal = rollerMotor.getSupplyCurrent(); pivotCurrentAmpsSignal = pivotMotor.getSupplyCurrent(); + pivotTemp = pivotMotor.getDeviceTemp(); + rollerTemp = rollerMotor.getDeviceTemp(); pivotCancoderPositionSignal = pivotCancoder.getPosition(); pivotCancoderVelocitySignal = pivotCancoder.getVelocity(); @@ -177,13 +182,15 @@ public void updateInputs(IntakeIOInputsAutoLogged inputs) { pivotAppliedVoltsSignal, pivotCurrentAmpsSignal, pivotCancoderPositionSignal, - pivotCancoderVelocitySignal + pivotCancoderVelocitySignal, + pivotTemp ); var rollerStatus = BaseStatusSignal.refreshAll( rollerAngularVelocitySignal, rollerAppliedVoltsSignal, - rollerCurrentAmpsSignal + rollerCurrentAmpsSignal, + rollerTemp ); inputs.pivotConnected = pivotConnectedDebounce.calculate(pivotStatus.isOK()); @@ -191,6 +198,7 @@ public void updateInputs(IntakeIOInputsAutoLogged inputs) { inputs.pivotAngularVelocity = pivotAngularVelocitySignal.getValue(); inputs.pivotAppliedVolts = pivotAppliedVoltsSignal.getValue(); inputs.pivotCurrentAmps = pivotCurrentAmpsSignal.getValue(); + inputs.pivotTemp = pivotTemp.getValue(); inputs.pivotCancoderPosition = pivotCancoderPositionSignal.getValue(); inputs.pivotCancoderVelocity = pivotCancoderVelocitySignal.getValue(); @@ -198,6 +206,7 @@ public void updateInputs(IntakeIOInputsAutoLogged inputs) { inputs.rollerAngularVelocity = rollerAngularVelocitySignal.getValue(); inputs.rollerAppliedVolts = rollerAppliedVoltsSignal.getValue(); inputs.rollerCurrentAmps = rollerCurrentAmpsSignal.getValue(); + inputs.rollerTemp = rollerTemp.getValue(); } @Override diff --git a/src/main/java/frc/robot/subsystems/shooter/ShooterIO.java b/src/main/java/frc/robot/subsystems/shooter/ShooterIO.java index f47fce99..538da256 100644 --- a/src/main/java/frc/robot/subsystems/shooter/ShooterIO.java +++ b/src/main/java/frc/robot/subsystems/shooter/ShooterIO.java @@ -1,6 +1,7 @@ package frc.robot.subsystems.shooter; import static edu.wpi.first.units.Units.Amps; +import static edu.wpi.first.units.Units.Celsius; import static edu.wpi.first.units.Units.RadiansPerSecond; import static edu.wpi.first.units.Units.Volts; @@ -8,6 +9,7 @@ import edu.wpi.first.units.measure.AngularVelocity; import edu.wpi.first.units.measure.Current; +import edu.wpi.first.units.measure.Temperature; import edu.wpi.first.units.measure.Voltage; public interface ShooterIO { @@ -18,6 +20,7 @@ public static class ShooterIOInputs { public Voltage shooter1Voltage = Volts.zero(); public Current shooter1Current = Amps.zero(); public AngularVelocity shooter1Velocity = RadiansPerSecond.zero(); + public Temperature shooter1Temp = Celsius.zero(); public Voltage shooter2Voltage = Volts.zero(); public Current shooter2Current = Amps.zero(); diff --git a/src/main/java/frc/robot/subsystems/shooter/ShooterIOTalonFX.java b/src/main/java/frc/robot/subsystems/shooter/ShooterIOTalonFX.java index cd3a6644..6cf60b99 100644 --- a/src/main/java/frc/robot/subsystems/shooter/ShooterIOTalonFX.java +++ b/src/main/java/frc/robot/subsystems/shooter/ShooterIOTalonFX.java @@ -18,6 +18,7 @@ import edu.wpi.first.units.measure.AngularVelocity; import edu.wpi.first.units.measure.Current; +import edu.wpi.first.units.measure.Temperature; import edu.wpi.first.units.measure.Voltage; public class ShooterIOTalonFX implements ShooterIO { @@ -31,14 +32,17 @@ public class ShooterIOTalonFX implements ShooterIO { private StatusSignal shooter1AngularVelocity; private StatusSignal shooter1AppliedVolts; private StatusSignal shooter1CurrentAmps; + private StatusSignal shooter1Temp; private StatusSignal shooter2AngularVelocity; private StatusSignal shooter2AppliedVolts; private StatusSignal shooter2CurrentAmps; + private StatusSignal shooter2Temp; private StatusSignal shooter3AngularVelocity; private StatusSignal shooter3AppliedVolts; private StatusSignal shooter3CurrentAmps; + private StatusSignal shooter3Temp; public ShooterIOTalonFX(CANBus shooterCANBus) { @@ -80,24 +84,30 @@ public ShooterIOTalonFX(CANBus shooterCANBus) { shooter1AngularVelocity = shooter1Motor.getVelocity(); shooter1AppliedVolts = shooter1Motor.getMotorVoltage(); shooter1CurrentAmps = shooter1Motor.getSupplyCurrent(); + shooter1Temp = shooter1Motor.getDeviceTemp(); shooter2AngularVelocity = shooter2Motor.getVelocity(); shooter2AppliedVolts = shooter2Motor.getMotorVoltage(); shooter2CurrentAmps = shooter2Motor.getSupplyCurrent(); + shooter2Temp = shooter2Motor.getDeviceTemp(); shooter3AngularVelocity = shooter3Motor.getVelocity(); shooter3AppliedVolts = shooter3Motor.getMotorVoltage(); shooter3CurrentAmps = shooter3Motor.getSupplyCurrent(); + shooter3Temp = shooter3Motor.getDeviceTemp(); // Status Signal Collection, less repetitive code signals = new StatusSignalCollection( shooter1AngularVelocity, shooter1AppliedVolts, shooter1CurrentAmps, + shooter1Temp, shooter2AngularVelocity, shooter2AppliedVolts, shooter2CurrentAmps, + shooter2Temp, shooter3AngularVelocity, shooter3AppliedVolts, - shooter3CurrentAmps + shooter3CurrentAmps, + shooter3Temp ); tryUntilOk(5, () -> signals.setUpdateFrequencyForAll(50.0)); @@ -123,6 +133,10 @@ public void updateInputs(ShooterIOInputs inputs) { inputs.shooter2Current = shooter2CurrentAmps.getValue(); inputs.shooter3Current = shooter3CurrentAmps.getValue(); + inputs.shooter1Temp = shooter1Temp.getValue(); + inputs.shooter2Temp = shooter2Temp.getValue(); + inputs.shooter3Temp = shooter3Temp.getValue(); + inputs.wheelVelocity = inputs.shooter1Velocity.times(ShooterConstants.gearRatio); }