From 14eea647f2b65bbfeaa754fba1017e67a79e9420 Mon Sep 17 00:00:00 2001 From: Wesley28w Date: Thu, 5 Mar 2026 09:01:53 -0800 Subject: [PATCH] debouncer for anti jamming of spindexer --- .../frc/robot/commands/gpm/RunSpindexer.java | 26 ++++++++++++++++--- .../robot/subsystems/spindexer/Spindexer.java | 14 +++------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/main/java/frc/robot/commands/gpm/RunSpindexer.java b/src/main/java/frc/robot/commands/gpm/RunSpindexer.java index 17a615f..6e9e2ee 100644 --- a/src/main/java/frc/robot/commands/gpm/RunSpindexer.java +++ b/src/main/java/frc/robot/commands/gpm/RunSpindexer.java @@ -1,12 +1,17 @@ package frc.robot.commands.gpm; +import edu.wpi.first.math.filter.Debouncer; +import edu.wpi.first.math.filter.Debouncer.DebounceType; import edu.wpi.first.wpilibj2.command.Command; import frc.robot.subsystems.spindexer.Spindexer; +import frc.robot.subsystems.spindexer.SpindexerConstants; import frc.robot.subsystems.turret.Turret; public class RunSpindexer extends Command { private Spindexer spindexer; private Turret turret; + private Debouncer jam_debouncer = new Debouncer(0.3, DebounceType.kFalling); + private boolean reversing = false; public RunSpindexer(Spindexer spindexer, Turret turret){ this.spindexer = spindexer; this.turret = turret; @@ -15,16 +20,31 @@ public class RunSpindexer extends Command { @Override public void execute() { - if (turret.atSetpoint()) { - spindexer.maxSpindexer(); - } else { + if (!turret.atSetpoint()) { spindexer.stopSpindexer(); + reversing = false; + return; // this is so the balls don't fly out when unaligned + } + boolean jammed = spindexer.getStatorCurrent() > SpindexerConstants.JAM_CURRENT_THRESHOLD; + if (jammed) { + reversing = true; + } + + if (reversing) { + spindexer.reverseSpindexer(); + + if (jam_debouncer.calculate(!jammed)) { + reversing = false; + } + } else { + spindexer.maxSpindexer(); } } @Override public void end(boolean interrupted) { spindexer.stopSpindexer(); + reversing = false; } @Override diff --git a/src/main/java/frc/robot/subsystems/spindexer/Spindexer.java b/src/main/java/frc/robot/subsystems/spindexer/Spindexer.java index 6a83883..53ed3e9 100644 --- a/src/main/java/frc/robot/subsystems/spindexer/Spindexer.java +++ b/src/main/java/frc/robot/subsystems/spindexer/Spindexer.java @@ -42,8 +42,6 @@ public class Spindexer extends SubsystemBase implements SpindexerIO { updateInputs(); Logger.processInputs("Spindexer", inputs); - // reverse on jam - checkJam(); if (state == SpindexerState.MAX) { motor.set(SpindexerConstants.spindexerMaxPower); } else if (state == SpindexerState.REVERSE) { @@ -65,14 +63,6 @@ public class Spindexer extends SubsystemBase implements SpindexerIO { wasSpindexerSlow = isSpindexerSlow; } - public void checkJam() { - // if a current spike then reverse - if (inputs.spindexerCurrent >= SpindexerConstants.JAM_CURRENT_THRESHOLD) { - state = SpindexerState.REVERSE; - System.out.println("Jammed: Reversing"); - } - } - public void maxSpindexer() { state = SpindexerState.MAX; } @@ -90,6 +80,10 @@ public class Spindexer extends SubsystemBase implements SpindexerIO { state = SpindexerState.CUSTOM; } + public double getStatorCurrent() { + return inputs.spindexerCurrent; + } + @Override public void updateInputs() { inputs.spindexerVelocity = motor.getVelocity().getValueAsDouble(); //SpindexerConstants.gearRatio; -- 2.39.5