import com.ctre.phoenix6.hardware.TalonFX;
+import org.littletonrobotics.junction.Logger;
+
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
-import edu.wpi.first.wpilibj2.command.InstantCommand;
import edu.wpi.first.wpilibj2.command.SubsystemBase;
+import frc.robot.constants.Constants;
import frc.robot.constants.IdConstants;
import frc.robot.subsystems.spindexer.SpindexerIO;
public class Spindexer extends SubsystemBase implements SpindexerIO{
- TalonFX motor = new TalonFX(IdConstants.SPINDEXER_ID);
+ private TalonFX motor = new TalonFX(IdConstants.SPINDEXER_ID, Constants.SUBSYSTEM_CANIVORE_CAN);
private double power = 0.0;
public int ballCount = 0;
+ private boolean wasSpindexerSlow = false;
private SpindexerIOInputsAutoLogged inputs = new SpindexerIOInputsAutoLogged();
public Spindexer(){
- //SmartDashboard.putData("Turn on Spindexer", new InstantCommand(()-> turnOnSpindexer()));
+ updateInputs();
}
@Override
public void periodic() {
- power = SmartDashboard.getNumber("Spindexer Power", power);
- SmartDashboard.putNumber("Spindexer Power", power);
+ updateInputs();
+
+ double dashboardPower = SmartDashboard.getNumber("Spindexer Power", -1.0);
+ if (dashboardPower != -1.0) {
+ power = dashboardPower;
+ }
+
motor.set(power);
- if (inputs.spindexerVelocity < SpindexerConstants.spindexerVelocityWithBall) {
+
+ boolean isSpindexerSlow = inputs.spindexerVelocity < SpindexerConstants.spindexerVelocityWithBall;
+ if (wasSpindexerSlow && !isSpindexerSlow && power > 0.1) {
ballCount++;
}
+ wasSpindexerSlow = isSpindexerSlow;
}
public void maxSpindexer(){
- power = 1.0;
+ power = SpindexerConstants.spindexerMaxPower;
}
public void stopSpindexer(){
public void updateInputs() {
inputs.spindexerVelocity = motor.getVelocity().getValueAsDouble();
inputs.spindexerCurrent = motor.getStatorCurrent().getValueAsDouble();
+ Logger.processInputs("Spindexer", inputs);
}
}