public class RunSpindexer extends Command {
private Spindexer spindexer;
private Turret turret;
- private Debouncer jam_debouncer = new Debouncer(SpindexerConstants.JAM_DEBOUNCE_TIME, DebounceType.kFalling);
+
+ private Debouncer jam_debouncer = new Debouncer(SpindexerConstants.JAM_DEBOUNCE_TIME, DebounceType.kRising); // if their is jam I would think this is 0 -> 1
+ private Debouncer reversing_debouncer = new Debouncer(SpindexerConstants.REVERSE_DEBOUNCE_TIME, DebounceType.kFalling); // if there is a release in time Idk what it would be (kfalling vs krising)
+
private boolean reversing = false;
- public RunSpindexer(Spindexer spindexer, Turret turret){
+ public RunSpindexer(Spindexer spindexer, Turret turret) {
this.spindexer = spindexer;
this.turret = turret;
addRequirements(spindexer, turret);
return; // this is so the balls don't fly out when unaligned
}
boolean jammed = spindexer.getStatorCurrent() > SpindexerConstants.JAM_CURRENT_THRESHOLD;
- if (jammed) {
+ if (jam_debouncer.calculate(jammed)) {
reversing = true;
- jam_debouncer.calculate(false);
+ System.out.println("Reversing the spindexer for Anti-Jam");
}
-
- if (reversing) {
+ if (!reversing) {
+ spindexer.maxSpindexer();
+ } else {
spindexer.reverseSpindexer();
-
- if (jam_debouncer.calculate(!jammed)) {
+ if (reversing_debouncer.calculate(reversing)) {
reversing = false;
+ reversing_debouncer.calculate(false);
+ jam_debouncer.calculate(false);
}
- } else {
- spindexer.maxSpindexer();
}
}