From 3a510e947f8dc87710cb14c241baaaa8c2134e50 Mon Sep 17 00:00:00 2001 From: maceolsweeney Date: Wed, 19 Nov 2025 21:16:41 -0800 Subject: [PATCH 1/9] candi io first commit --- .../java/frc/lib/io/BeamBreakIOCANdi.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/main/java/frc/lib/io/BeamBreakIOCANdi.java diff --git a/src/main/java/frc/lib/io/BeamBreakIOCANdi.java b/src/main/java/frc/lib/io/BeamBreakIOCANdi.java new file mode 100644 index 0000000..9a3c61b --- /dev/null +++ b/src/main/java/frc/lib/io/BeamBreakIOCANdi.java @@ -0,0 +1,31 @@ +package frc.lib.io; + +import com.ctre.phoenix6.configs.CANdiConfiguration; +import com.ctre.phoenix6.hardware.CANdi; + +import edu.wpi.first.units.measure.Time; +import edu.wpi.first.wpilibj.DigitalInput; + +public class BeamBreakIOCANdi extends BeamBreakIO { + private final CANdi candi; + public BeamBreakIOCANdi(int channel, String bus, Time debounce, String name, CANdiConfiguration config) { + super(debounce, name); + candi = new CANdi(channel, bus); + candi.getConfigurator().apply(config); + } + + public Boolean getFirstBanner() { + return candi.getS1Closed().getValue(); + } + + public Boolean getSecondBanner() { + return candi.getS2Closed().getValue(); + } + + @Override + public boolean get() { + return getFirstBanner() && getSecondBanner(); + } + + +} From 03af5299594b2a2db4feae4f9259cb8584d70ecf Mon Sep 17 00:00:00 2001 From: maceolsweeney Date: Thu, 20 Nov 2025 21:31:32 -0800 Subject: [PATCH 2/9] verified. allow for multiple i/o objects referencing one candi --- .../java/frc/lib/io/BeamBreakIOCANdi.java | 55 ++++++++++++++----- src/main/java/frc/robot/Ports.java | 5 +- .../frc/robot/controlboard/ControlBoard.java | 12 ---- .../SuperstructureConstants.java | 38 +++++++++++-- 4 files changed, 75 insertions(+), 35 deletions(-) diff --git a/src/main/java/frc/lib/io/BeamBreakIOCANdi.java b/src/main/java/frc/lib/io/BeamBreakIOCANdi.java index 9a3c61b..8df9148 100644 --- a/src/main/java/frc/lib/io/BeamBreakIOCANdi.java +++ b/src/main/java/frc/lib/io/BeamBreakIOCANdi.java @@ -2,30 +2,55 @@ import com.ctre.phoenix6.configs.CANdiConfiguration; import com.ctre.phoenix6.hardware.CANdi; +import com.ctre.phoenix6.signals.S1CloseStateValue; +import com.ctre.phoenix6.signals.S1FloatStateValue; +import com.ctre.phoenix6.signals.S2CloseStateValue; +import com.ctre.phoenix6.signals.S2FloatStateValue; import edu.wpi.first.units.measure.Time; import edu.wpi.first.wpilibj.DigitalInput; public class BeamBreakIOCANdi extends BeamBreakIO { - private final CANdi candi; - public BeamBreakIOCANdi(int channel, String bus, Time debounce, String name, CANdiConfiguration config) { - super(debounce, name); - candi = new CANdi(channel, bus); - candi.getConfigurator().apply(config); - } + private final CANdi mCANdi; + private final int digitalInputChannel; - public Boolean getFirstBanner() { - return candi.getS1Closed().getValue(); - } + public static BeamBreakIOCANdi makeInverted(int channel, Time debounce, String name, CANdi candi) { + return new BeamBreakIOCANdi(channel, debounce, name, candi) { + @Override + public boolean get() { + return !super.get(); + } + }; + } + + public BeamBreakIOCANdi(int channel, Time debounce, String name, CANdi candi) { + super(debounce, name); + this.mCANdi = candi; + + assert channel == 1 || channel == 2; + + this.digitalInputChannel = channel; + + CANdiConfiguration candiConfiguration = new CANdiConfiguration(); - public Boolean getSecondBanner() { - return candi.getS2Closed().getValue(); + candiConfiguration.DigitalInputs.S1CloseState = S1CloseStateValue.CloseWhenNotHigh; + candiConfiguration.DigitalInputs.S1FloatState = S1FloatStateValue.PullLow; + candiConfiguration.DigitalInputs.S2CloseState = S2CloseStateValue.CloseWhenNotHigh; + candiConfiguration.DigitalInputs.S2FloatState = S2FloatStateValue.PullLow; + + mCANdi.getConfigurator().apply(candiConfiguration); + } + + public boolean getSignalInput1() { + return mCANdi.getS1Closed().getValue(); } + public boolean getSignalInput2() { + return mCANdi.getS2Closed().getValue(); + }; + @Override public boolean get() { - return getFirstBanner() && getSecondBanner(); - } - - + return digitalInputChannel == 1 ? getSignalInput1() : getSignalInput1(); + } } diff --git a/src/main/java/frc/robot/Ports.java b/src/main/java/frc/robot/Ports.java index c000a66..f2bc3d3 100644 --- a/src/main/java/frc/robot/Ports.java +++ b/src/main/java/frc/robot/Ports.java @@ -18,8 +18,9 @@ public enum Ports { CLIMBER_ROLLERS(18, "canivore1"), CANDLE(21, "canivore1"), - END_EFFECTOR_CORAL_BREAMBREAK(RobotConstants.isComp ? 1 : 5, "RioDigitalIn"), - END_EFFECTOR_ALGAE_BEAMBREAK(RobotConstants.isComp ? 0 : 0, "RioDigitalIn"), + // END_EFFECTOR_CORAL_BREAMBREAK(RobotConstants.isComp ? 1 : 5, "RioDigitalIn"), + // END_EFFECTOR_ALGAE_BEAMBREAK(RobotConstants.isComp ? 0 : 0, "RioDigitalIn"), + CANDI(23,"canivore1"), INDEXER_BEAMBREAK(RobotConstants.isComp ? 8 : 4, "RioDigitalIn"), ENCODER_41T(4, "canivore1"), diff --git a/src/main/java/frc/robot/controlboard/ControlBoard.java b/src/main/java/frc/robot/controlboard/ControlBoard.java index 70b37d7..85484d5 100644 --- a/src/main/java/frc/robot/controlboard/ControlBoard.java +++ b/src/main/java/frc/robot/controlboard/ControlBoard.java @@ -396,18 +396,6 @@ private void debugControls() { .onFalse(Elevator.mInstance .setpointCommand(Elevator.HOLD_UP) .andThen(() -> Elevator.mInstance.useSoftLimits(true))); - // operator.rightTrigger(0.1) - // .onTrue(Elevator.mInstance - // .setpointCommand(Elevator.JOG_DOWN) - // .andThen(() -> Elevator.mInstance.useSoftLimits(false))) - // .onFalse(Elevator.mInstance - // .setpointCommand(Elevator.HOLD_UP) - // .andThen(() -> Elevator.mInstance.useSoftLimits(true))); - - // operator.pov(POVDirection.Up).onTrue(ClimberRollers.mInstance.setpointCommand(ClimberRollers.INTAKE)); - - // operator.pov(POVDirection.Down).onTrue(ClimberRollers.mInstance.setpointCommand(ClimberRollers.IDLE)); - operator.leftBumper() .onTrue(new InstantCommand(() -> Pivot.mInstance.setCurrentPosition( Pivot.mInstance.directCancoder.getPosition().getValue())) diff --git a/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java b/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java index e4bc2cb..23fc189 100644 --- a/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java +++ b/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java @@ -8,6 +8,7 @@ import edu.wpi.first.units.measure.Time; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import frc.lib.io.BeamBreakIO; +import frc.lib.io.BeamBreakIOCANdi; import frc.lib.io.BeamBreakIODigitalIn; import frc.lib.io.BeamBreakIOSim; import frc.lib.util.FieldLayout.Level; @@ -23,15 +24,39 @@ import java.util.function.BooleanSupplier; +import com.ctre.phoenix6.configs.CANdiConfiguration; +import com.ctre.phoenix6.hardware.CANdi; +import com.ctre.phoenix6.signals.S1CloseStateValue; +import com.ctre.phoenix6.signals.S1FloatStateValue; +import com.ctre.phoenix6.signals.S2CloseStateValue; +import com.ctre.phoenix6.signals.S2FloatStateValue; + public final class SuperstructureConstants { public static class BeamBreakConstants { + public static final CANdi mCandi = getEndeffectorCandi(); + + public static CANdi getEndeffectorCandi() { + CANdi candi = new CANdi(Ports.CANDI.id, Ports.CANDI.bus); + + CANdiConfiguration candiConfiguration = new CANdiConfiguration(); + candiConfiguration.DigitalInputs.S1CloseState = S1CloseStateValue.CloseWhenNotHigh; + candiConfiguration.DigitalInputs.S1FloatState = S1FloatStateValue.PullLow; + candiConfiguration.DigitalInputs.S2CloseState = S2CloseStateValue.CloseWhenNotHigh; + candiConfiguration.DigitalInputs.S2FloatState = S2FloatStateValue.PullLow; + + candi.getConfigurator().apply(candiConfiguration); + + return candi; + + } public static BeamBreakIO getEndEffectorCoralBeamBreak() { if (Robot.isReal()) { try { - return new BeamBreakIODigitalIn( - Ports.END_EFFECTOR_CORAL_BREAMBREAK.id, + return new BeamBreakIOCANdi( + 1, SuperstructureConstants.kEndEffectorCoralDebounce, - "Coral End Effector Break"); + "Coral End Effector Break", + mCandi); } catch (Exception e) { SmartDashboard.putString("End Effector Beam Break", "Failed"); return new BeamBreakIOSim( @@ -60,10 +85,11 @@ public static BeamBreakIO getEndEffectorVelocityDip() { public static BeamBreakIO getEndEffectorAlgaeBeamBreak() { if (Robot.isReal()) { try { - return new BeamBreakIODigitalIn( - Ports.END_EFFECTOR_ALGAE_BEAMBREAK.id, + return new BeamBreakIOCANdi( + 2, SuperstructureConstants.kEndEffectorAlgaeDebounce, - "Algae End Effector Break"); + "Algae End Effector Break", + mCandi); } catch (Exception e) { SmartDashboard.putString("End Effector Beam Break", "Failed"); return new BeamBreakIOSim( From 5ab988f09378408487619a0f80c8d7dd4c2b3d4e Mon Sep 17 00:00:00 2001 From: maceolsweeney Date: Sat, 22 Nov 2025 16:42:28 -0800 Subject: [PATCH 3/9] fix typo --- src/main/java/frc/lib/io/BeamBreakIOCANdi.java | 2 +- src/main/java/frc/robot/Ports.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/frc/lib/io/BeamBreakIOCANdi.java b/src/main/java/frc/lib/io/BeamBreakIOCANdi.java index 8df9148..a13b977 100644 --- a/src/main/java/frc/lib/io/BeamBreakIOCANdi.java +++ b/src/main/java/frc/lib/io/BeamBreakIOCANdi.java @@ -51,6 +51,6 @@ public boolean getSignalInput2() { @Override public boolean get() { - return digitalInputChannel == 1 ? getSignalInput1() : getSignalInput1(); + return digitalInputChannel == 1 ? getSignalInput1() : getSignalInput2(); } } diff --git a/src/main/java/frc/robot/Ports.java b/src/main/java/frc/robot/Ports.java index f2bc3d3..3700aa0 100644 --- a/src/main/java/frc/robot/Ports.java +++ b/src/main/java/frc/robot/Ports.java @@ -16,7 +16,7 @@ public enum Ports { PIVOT(16, "canivore1"), CLIMBER(17, "canivore1"), CLIMBER_ROLLERS(18, "canivore1"), - CANDLE(21, "canivore1"), + CANDLE(23, "canivore1"), // END_EFFECTOR_CORAL_BREAMBREAK(RobotConstants.isComp ? 1 : 5, "RioDigitalIn"), // END_EFFECTOR_ALGAE_BEAMBREAK(RobotConstants.isComp ? 0 : 0, "RioDigitalIn"), From 81c6bd7eecf9687c03095d12e0ab16de4ebd8621 Mon Sep 17 00:00:00 2001 From: maceolsweeney Date: Tue, 9 Dec 2025 17:17:50 -0800 Subject: [PATCH 4/9] invert values --- .../subsystems/superstructure/SuperstructureConstants.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java b/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java index 23fc189..2401583 100644 --- a/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java +++ b/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java @@ -52,7 +52,7 @@ public static CANdi getEndeffectorCandi() { public static BeamBreakIO getEndEffectorCoralBeamBreak() { if (Robot.isReal()) { try { - return new BeamBreakIOCANdi( + return BeamBreakIOCANdi.makeInverted( 1, SuperstructureConstants.kEndEffectorCoralDebounce, "Coral End Effector Break", @@ -85,7 +85,7 @@ public static BeamBreakIO getEndEffectorVelocityDip() { public static BeamBreakIO getEndEffectorAlgaeBeamBreak() { if (Robot.isReal()) { try { - return new BeamBreakIOCANdi( + return BeamBreakIOCANdi.makeInverted( 2, SuperstructureConstants.kEndEffectorAlgaeDebounce, "Algae End Effector Break", From 95a2ccb02122ce01e018d62383dc7b97a2e04788 Mon Sep 17 00:00:00 2001 From: maceolsweeney Date: Tue, 9 Dec 2025 18:43:47 -0800 Subject: [PATCH 5/9] suggested changes --- .../java/frc/lib/io/BeamBreakIOCANdi.java | 14 ++++++------- .../superstructure/Superstructure.java | 9 +++++++-- .../SuperstructureConstants.java | 20 +++++++++---------- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/main/java/frc/lib/io/BeamBreakIOCANdi.java b/src/main/java/frc/lib/io/BeamBreakIOCANdi.java index a13b977..68edb41 100644 --- a/src/main/java/frc/lib/io/BeamBreakIOCANdi.java +++ b/src/main/java/frc/lib/io/BeamBreakIOCANdi.java @@ -12,10 +12,10 @@ public class BeamBreakIOCANdi extends BeamBreakIO { private final CANdi mCANdi; - private final int digitalInputChannel; + private final boolean isChannelOne; - public static BeamBreakIOCANdi makeInverted(int channel, Time debounce, String name, CANdi candi) { - return new BeamBreakIOCANdi(channel, debounce, name, candi) { + public static BeamBreakIOCANdi makeInverted(boolean isChannelOne, Time debounce, String name, CANdi candi) { + return new BeamBreakIOCANdi(isChannelOne, debounce, name, candi) { @Override public boolean get() { return !super.get(); @@ -23,13 +23,11 @@ public boolean get() { }; } - public BeamBreakIOCANdi(int channel, Time debounce, String name, CANdi candi) { + public BeamBreakIOCANdi(boolean isChannelOne, Time debounce, String name, CANdi candi) { super(debounce, name); this.mCANdi = candi; - assert channel == 1 || channel == 2; - - this.digitalInputChannel = channel; + this.isChannelOne = isChannelOne; CANdiConfiguration candiConfiguration = new CANdiConfiguration(); @@ -51,6 +49,6 @@ public boolean getSignalInput2() { @Override public boolean get() { - return digitalInputChannel == 1 ? getSignalInput1() : getSignalInput2(); + return isChannelOne ? getSignalInput1() : getSignalInput2(); } } diff --git a/src/main/java/frc/robot/subsystems/superstructure/Superstructure.java b/src/main/java/frc/robot/subsystems/superstructure/Superstructure.java index 8347d55..cd28905 100644 --- a/src/main/java/frc/robot/subsystems/superstructure/Superstructure.java +++ b/src/main/java/frc/robot/subsystems/superstructure/Superstructure.java @@ -1,5 +1,6 @@ package frc.robot.subsystems.superstructure; +import com.ctre.phoenix6.hardware.CANdi; import com.ctre.phoenix6.swerve.SwerveDrivetrain.SwerveDriveState; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; @@ -58,8 +59,10 @@ public class Superstructure extends SubsystemBase { public static final Superstructure mInstance = new Superstructure(); - public static BeamBreakIO endEffectorCoralBreak = BeamBreakConstants.getEndEffectorCoralBeamBreak(); - private static BeamBreakIO endEffectorAlgaeBreak = BeamBreakConstants.getEndEffectorAlgaeBeamBreak(); + public static final CANdi mEECANdi = SuperstructureConstants.BeamBreakConstants.getCANdi(); + public static BeamBreakIO endEffectorCoralBreak = BeamBreakConstants.getEndEffectorCoralBeamBreak(mEECANdi); + private static BeamBreakIO endEffectorAlgaeBreak = BeamBreakConstants.getEndEffectorAlgaeBeamBreak(mEECANdi); + public static BeamBreakIO endEffectorVelocityDip = BeamBreakConstants.getEndEffectorVelocityDip(); public static BeamBreakIO coralRollersCurrentSpike = BeamBreakConstants.getCoralRollersCurrentSpike(); public static BeamBreakIO coralRollersVelocityDip = BeamBreakConstants.getCoralRollersVelocityDip(); @@ -68,6 +71,8 @@ public class Superstructure extends SubsystemBase { public static BeamBreakIO pivotVelocityLow = BeamBreakConstants.getPivotVelocityLow(); public static BeamBreakIO closeCoral = BeamBreakConstants.getCoralClose(); + + public static BeamBreakIO allAlgae = new BeamBreakIOSim( () -> endEffectorVelocityDip.getDebounced() || endEffectorAlgaeBreak.getDebounced(), Units.Seconds.of(0.0), diff --git a/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java b/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java index 2401583..a46acf6 100644 --- a/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java +++ b/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java @@ -33,9 +33,8 @@ public final class SuperstructureConstants { public static class BeamBreakConstants { - public static final CANdi mCandi = getEndeffectorCandi(); - public static CANdi getEndeffectorCandi() { + public static CANdi getCANdi() { CANdi candi = new CANdi(Ports.CANDI.id, Ports.CANDI.bus); CANdiConfiguration candiConfiguration = new CANdiConfiguration(); @@ -46,17 +45,17 @@ public static CANdi getEndeffectorCandi() { candi.getConfigurator().apply(candiConfiguration); - return candi; - + return candi; } - public static BeamBreakIO getEndEffectorCoralBeamBreak() { + + public static BeamBreakIO getEndEffectorCoralBeamBreak(CANdi candi) { if (Robot.isReal()) { try { return BeamBreakIOCANdi.makeInverted( - 1, + true, SuperstructureConstants.kEndEffectorCoralDebounce, "Coral End Effector Break", - mCandi); + candi); } catch (Exception e) { SmartDashboard.putString("End Effector Beam Break", "Failed"); return new BeamBreakIOSim( @@ -82,14 +81,15 @@ public static BeamBreakIO getEndEffectorVelocityDip() { } } - public static BeamBreakIO getEndEffectorAlgaeBeamBreak() { + public static BeamBreakIO getEndEffectorAlgaeBeamBreak(CANdi candi) { if (Robot.isReal()) { try { return BeamBreakIOCANdi.makeInverted( - 2, + false, SuperstructureConstants.kEndEffectorAlgaeDebounce, "Algae End Effector Break", - mCandi); + candi + ); } catch (Exception e) { SmartDashboard.putString("End Effector Beam Break", "Failed"); return new BeamBreakIOSim( From d428c26c30f3944c1f2185a1360345c71bd81ddf Mon Sep 17 00:00:00 2001 From: maceolsweeney Date: Sat, 3 Jan 2026 00:12:30 -0800 Subject: [PATCH 6/9] revisions --- .../subsystems/superstructure/Superstructure.java | 4 +++- .../superstructure/SuperstructureConstants.java | 15 --------------- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/src/main/java/frc/robot/subsystems/superstructure/Superstructure.java b/src/main/java/frc/robot/subsystems/superstructure/Superstructure.java index cd28905..4082703 100644 --- a/src/main/java/frc/robot/subsystems/superstructure/Superstructure.java +++ b/src/main/java/frc/robot/subsystems/superstructure/Superstructure.java @@ -25,6 +25,7 @@ import frc.lib.util.FieldLayout.Branch.Face; import frc.lib.util.FieldLayout.Level; import frc.lib.util.Util; +import frc.robot.Ports; import frc.robot.RobotConstants; import frc.robot.controlboard.ControlBoard; import frc.robot.planners.MotionPlanner; @@ -59,7 +60,8 @@ public class Superstructure extends SubsystemBase { public static final Superstructure mInstance = new Superstructure(); - public static final CANdi mEECANdi = SuperstructureConstants.BeamBreakConstants.getCANdi(); + public static final CANdi mEECANdi = new CANdi(Ports.CANDI.id, Ports.CANDI.bus); + public static BeamBreakIO endEffectorCoralBreak = BeamBreakConstants.getEndEffectorCoralBeamBreak(mEECANdi); private static BeamBreakIO endEffectorAlgaeBreak = BeamBreakConstants.getEndEffectorAlgaeBeamBreak(mEECANdi); diff --git a/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java b/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java index a46acf6..8ae8d03 100644 --- a/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java +++ b/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java @@ -33,21 +33,6 @@ public final class SuperstructureConstants { public static class BeamBreakConstants { - - public static CANdi getCANdi() { - CANdi candi = new CANdi(Ports.CANDI.id, Ports.CANDI.bus); - - CANdiConfiguration candiConfiguration = new CANdiConfiguration(); - candiConfiguration.DigitalInputs.S1CloseState = S1CloseStateValue.CloseWhenNotHigh; - candiConfiguration.DigitalInputs.S1FloatState = S1FloatStateValue.PullLow; - candiConfiguration.DigitalInputs.S2CloseState = S2CloseStateValue.CloseWhenNotHigh; - candiConfiguration.DigitalInputs.S2FloatState = S2FloatStateValue.PullLow; - - candi.getConfigurator().apply(candiConfiguration); - - return candi; - } - public static BeamBreakIO getEndEffectorCoralBeamBreak(CANdi candi) { if (Robot.isReal()) { try { From 6f7065876a5b129bbaacf800407fd85a6ecbf8e0 Mon Sep 17 00:00:00 2001 From: maceolsweeney Date: Sat, 3 Jan 2026 00:33:21 -0800 Subject: [PATCH 7/9] more revisions --- src/main/java/frc/lib/io/BeamBreakIOCANdi.java | 1 - .../java/frc/robot/controlboard/ControlBoard.java | 11 +++++++++++ .../superstructure/SuperstructureConstants.java | 6 ------ 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/java/frc/lib/io/BeamBreakIOCANdi.java b/src/main/java/frc/lib/io/BeamBreakIOCANdi.java index 68edb41..c4fd613 100644 --- a/src/main/java/frc/lib/io/BeamBreakIOCANdi.java +++ b/src/main/java/frc/lib/io/BeamBreakIOCANdi.java @@ -8,7 +8,6 @@ import com.ctre.phoenix6.signals.S2FloatStateValue; import edu.wpi.first.units.measure.Time; -import edu.wpi.first.wpilibj.DigitalInput; public class BeamBreakIOCANdi extends BeamBreakIO { private final CANdi mCANdi; diff --git a/src/main/java/frc/robot/controlboard/ControlBoard.java b/src/main/java/frc/robot/controlboard/ControlBoard.java index 85484d5..f9415c4 100644 --- a/src/main/java/frc/robot/controlboard/ControlBoard.java +++ b/src/main/java/frc/robot/controlboard/ControlBoard.java @@ -396,6 +396,17 @@ private void debugControls() { .onFalse(Elevator.mInstance .setpointCommand(Elevator.HOLD_UP) .andThen(() -> Elevator.mInstance.useSoftLimits(true))); + // operator.rightTrigger(0.1) + // .onTrue(Elevator.mInstance + // .setpointCommand(Elevator.JOG_DOWN) + // .andThen(() -> Elevator.mInstance.useSoftLimits(false))) + // .onFalse(Elevator.mInstance + // .setpointCommand(Elevator.HOLD_UP) + // .andThen(() -> Elevator.mInstance.useSoftLimits(true))); + + // operator.pov(POVDirection.Up).onTrue(ClimberRollers.mInstance.setpointCommand(ClimberRollers.INTAKE)); + + // operator.pov(POVDirection.Down).onTrue(ClimberRollers.mInstance.setpointCommand(ClimberRollers.IDLE)); operator.leftBumper() .onTrue(new InstantCommand(() -> Pivot.mInstance.setCurrentPosition( Pivot.mInstance.directCancoder.getPosition().getValue())) diff --git a/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java b/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java index 8ae8d03..add53a9 100644 --- a/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java +++ b/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java @@ -23,13 +23,7 @@ import frc.robot.subsystems.pivot.Pivot; import java.util.function.BooleanSupplier; - -import com.ctre.phoenix6.configs.CANdiConfiguration; import com.ctre.phoenix6.hardware.CANdi; -import com.ctre.phoenix6.signals.S1CloseStateValue; -import com.ctre.phoenix6.signals.S1FloatStateValue; -import com.ctre.phoenix6.signals.S2CloseStateValue; -import com.ctre.phoenix6.signals.S2FloatStateValue; public final class SuperstructureConstants { public static class BeamBreakConstants { From 9b8dda7db4e9d5a3bc35ed6efcc83cd4f60f4a5e Mon Sep 17 00:00:00 2001 From: maceolsweeney Date: Sat, 3 Jan 2026 09:01:18 -0800 Subject: [PATCH 8/9] remove unnessecary indentation --- src/main/java/frc/robot/controlboard/ControlBoard.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/frc/robot/controlboard/ControlBoard.java b/src/main/java/frc/robot/controlboard/ControlBoard.java index f9415c4..c396139 100644 --- a/src/main/java/frc/robot/controlboard/ControlBoard.java +++ b/src/main/java/frc/robot/controlboard/ControlBoard.java @@ -407,6 +407,7 @@ private void debugControls() { // operator.pov(POVDirection.Up).onTrue(ClimberRollers.mInstance.setpointCommand(ClimberRollers.INTAKE)); // operator.pov(POVDirection.Down).onTrue(ClimberRollers.mInstance.setpointCommand(ClimberRollers.IDLE)); + operator.leftBumper() .onTrue(new InstantCommand(() -> Pivot.mInstance.setCurrentPosition( Pivot.mInstance.directCancoder.getPosition().getValue())) From 5f04c8e95cd251430ae5f83eb2c671751f6542c5 Mon Sep 17 00:00:00 2001 From: maceolsweeney Date: Sat, 3 Jan 2026 19:32:06 -0800 Subject: [PATCH 9/9] final few changes --- src/main/java/frc/lib/io/BeamBreakIOCANdi.java | 15 +++++++++------ src/main/java/frc/robot/Ports.java | 4 +++- .../superstructure/SuperstructureConstants.java | 4 ++-- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/main/java/frc/lib/io/BeamBreakIOCANdi.java b/src/main/java/frc/lib/io/BeamBreakIOCANdi.java index c4fd613..e5b806b 100644 --- a/src/main/java/frc/lib/io/BeamBreakIOCANdi.java +++ b/src/main/java/frc/lib/io/BeamBreakIOCANdi.java @@ -11,10 +11,10 @@ public class BeamBreakIOCANdi extends BeamBreakIO { private final CANdi mCANdi; - private final boolean isChannelOne; + private final int channel; - public static BeamBreakIOCANdi makeInverted(boolean isChannelOne, Time debounce, String name, CANdi candi) { - return new BeamBreakIOCANdi(isChannelOne, debounce, name, candi) { + public static BeamBreakIOCANdi makeInverted(int channel, Time debounce, String name, CANdi candi) { + return new BeamBreakIOCANdi(channel, debounce, name, candi) { @Override public boolean get() { return !super.get(); @@ -22,11 +22,14 @@ public boolean get() { }; } - public BeamBreakIOCANdi(boolean isChannelOne, Time debounce, String name, CANdi candi) { + public BeamBreakIOCANdi(int channel, Time debounce, String name, CANdi candi) { super(debounce, name); + + assert channel == 1 || channel == 2; //Check to make sure that the channel # is valid + this.mCANdi = candi; - this.isChannelOne = isChannelOne; + this.channel = channel; CANdiConfiguration candiConfiguration = new CANdiConfiguration(); @@ -48,6 +51,6 @@ public boolean getSignalInput2() { @Override public boolean get() { - return isChannelOne ? getSignalInput1() : getSignalInput2(); + return channel == 1 ? getSignalInput1() : getSignalInput2(); } } diff --git a/src/main/java/frc/robot/Ports.java b/src/main/java/frc/robot/Ports.java index 3700aa0..a4c60bb 100644 --- a/src/main/java/frc/robot/Ports.java +++ b/src/main/java/frc/robot/Ports.java @@ -20,8 +20,10 @@ public enum Ports { // END_EFFECTOR_CORAL_BREAMBREAK(RobotConstants.isComp ? 1 : 5, "RioDigitalIn"), // END_EFFECTOR_ALGAE_BEAMBREAK(RobotConstants.isComp ? 0 : 0, "RioDigitalIn"), - CANDI(23,"canivore1"), + CANDI(21,"canivore1"), INDEXER_BEAMBREAK(RobotConstants.isComp ? 8 : 4, "RioDigitalIn"), + EE_CORAL_BEAMBREAK(1, "CANdi"), //Slot 1 or 2 on the CANdi + EE_ALGAE_BEAMBREAK(2, "CANdi"), ENCODER_41T(4, "canivore1"), ENCODER_39T(5, "canivore1"), diff --git a/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java b/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java index add53a9..518c2a5 100644 --- a/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java +++ b/src/main/java/frc/robot/subsystems/superstructure/SuperstructureConstants.java @@ -31,7 +31,7 @@ public static BeamBreakIO getEndEffectorCoralBeamBreak(CANdi candi) { if (Robot.isReal()) { try { return BeamBreakIOCANdi.makeInverted( - true, + Ports.EE_CORAL_BEAMBREAK.id, SuperstructureConstants.kEndEffectorCoralDebounce, "Coral End Effector Break", candi); @@ -64,7 +64,7 @@ public static BeamBreakIO getEndEffectorAlgaeBeamBreak(CANdi candi) { if (Robot.isReal()) { try { return BeamBreakIOCANdi.makeInverted( - false, + Ports.EE_ALGAE_BEAMBREAK.id, SuperstructureConstants.kEndEffectorAlgaeDebounce, "Algae End Effector Break", candi