diff --git a/src/main/java/org/blackknights/RobotContainer.java b/src/main/java/org/blackknights/RobotContainer.java index 65b089b..b9957a5 100644 --- a/src/main/java/org/blackknights/RobotContainer.java +++ b/src/main/java/org/blackknights/RobotContainer.java @@ -6,6 +6,7 @@ import edu.wpi.first.wpilibj.smartdashboard.SendableChooser; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import edu.wpi.first.wpilibj2.command.*; +import edu.wpi.first.wpilibj2.command.button.CommandXboxController; import java.util.function.Supplier; import org.blackknights.commands.*; import org.blackknights.constants.ScoringConstants; @@ -28,8 +29,8 @@ public class RobotContainer { ButtonBoardSubsystem buttonBoardSubsystem = new ButtonBoardSubsystem(buttonBoard); // Controllers - Controller primaryController = new Controller(0); - Controller secondaryController = new Controller(1); + CommandXboxController primaryController = new CommandXboxController(0); + CommandXboxController secondaryController = new CommandXboxController(1); private final NetworkTablesUtils NTTune = NetworkTablesUtils.getTable("debug"); @@ -88,20 +89,26 @@ private void configureBindings() { true, true)); - primaryController.leftBumper.whileTrue( - getPlaceCommand(() -> coralQueue.getCurrentPosition(), () -> coralQueue.getNext())); - - primaryController.rightBumper.whileTrue( - new ParallelCommandGroup( - new ElevatorArmCommand( - elevatorSubsystem, - armSubsystem, - () -> ScoringConstants.ScoringHeights.INTAKE), - new IntakeCommand(intakeSubsystem, IntakeCommand.IntakeMode.INTAKE))); + primaryController + .leftBumper() + .whileTrue( + getPlaceCommand( + () -> coralQueue.getCurrentPosition(), () -> coralQueue.getNext())); + + primaryController + .leftBumper() + .whileTrue( + new ParallelCommandGroup( + new ElevatorArmCommand( + elevatorSubsystem, + armSubsystem, + () -> ScoringConstants.ScoringHeights.INTAKE), + new IntakeCommand( + intakeSubsystem, IntakeCommand.IntakeMode.INTAKE))); elevatorSubsystem.setDefaultCommand(new BaseCommand(elevatorSubsystem, armSubsystem)); - primaryController.dpadDown.whileTrue(new RunCommand(() -> swerveSubsystem.zeroGyro())); + primaryController.povDown().whileTrue(new RunCommand(() -> swerveSubsystem.zeroGyro())); // SECONDARY CONTROLLER @@ -113,32 +120,53 @@ private void configureBindings() { // secondaryController.rightBumper.onTrue(new InstantCommand(() -> // coralQueue.stepForwards())); - secondaryController.aButton.whileTrue( - new ElevatorArmCommand( - elevatorSubsystem, armSubsystem, () -> ScoringConstants.ScoringHeights.L1)); + secondaryController + .a() + .whileTrue( + new ElevatorArmCommand( + elevatorSubsystem, + armSubsystem, + () -> ScoringConstants.ScoringHeights.L1)); - secondaryController.bButton.whileTrue( - new ElevatorArmCommand( - elevatorSubsystem, armSubsystem, () -> ScoringConstants.ScoringHeights.L2)); + secondaryController + .b() + .whileTrue( + new ElevatorArmCommand( + elevatorSubsystem, + armSubsystem, + () -> ScoringConstants.ScoringHeights.L2)); - secondaryController.xButton.whileTrue( - new ElevatorArmCommand( - elevatorSubsystem, armSubsystem, () -> ScoringConstants.ScoringHeights.L3)); + secondaryController + .x() + .whileTrue( + new ElevatorArmCommand( + elevatorSubsystem, + armSubsystem, + () -> ScoringConstants.ScoringHeights.L3)); - secondaryController.yButton.whileTrue( - new ElevatorArmCommand( - elevatorSubsystem, armSubsystem, () -> ScoringConstants.ScoringHeights.L4)); + secondaryController + .y() + .whileTrue( + new ElevatorArmCommand( + elevatorSubsystem, + armSubsystem, + () -> ScoringConstants.ScoringHeights.L4)); + + secondaryController + .leftBumper() + .onTrue(new InstantCommand(() -> coralQueue.stepForwards())); - secondaryController.leftBumper.onTrue(new InstantCommand(() -> coralQueue.stepForwards())); + secondaryController + .rightBumper() + .onTrue(new InstantCommand(() -> coralQueue.stepBackwards())); - secondaryController.rightBumper.onTrue( - new InstantCommand(() -> coralQueue.stepBackwards())); + secondaryController + .rightTrigger(0.2) + .whileTrue(new IntakeCommand(intakeSubsystem, IntakeCommand.IntakeMode.OUTTAKE)); - // secondaryController.rightTrigger.whileTrue( - // new IntakeCommand(intakeSubsystem, IntakeCommand.IntakeMode.OUTTAKE)); - // - // secondaryController.leftTrigger.whileTrue( - // new IntakeCommand(intakeSubsystem, IntakeCommand.IntakeMode.INTAKE)); + secondaryController + .leftTrigger(0.2) + .whileTrue(new IntakeCommand(intakeSubsystem, IntakeCommand.IntakeMode.INTAKE)); } /** Runs once when the code starts */ diff --git a/src/main/java/org/blackknights/commands/ClimberCommand.java b/src/main/java/org/blackknights/commands/ClimberCommand.java index 06d49cf..44709f3 100644 --- a/src/main/java/org/blackknights/commands/ClimberCommand.java +++ b/src/main/java/org/blackknights/commands/ClimberCommand.java @@ -2,13 +2,14 @@ package org.blackknights.commands; import edu.wpi.first.wpilibj2.command.Command; +import edu.wpi.first.wpilibj2.command.button.CommandXboxController; import org.blackknights.subsystems.ClimberSubsystem; import org.blackknights.utils.Controller; /** Climber command to control the climber */ public class ClimberCommand extends Command { public ClimberSubsystem climberSubsystem; - public Controller controller; + public CommandXboxController controller; /** * Command to controller the climber, right now over pure voltage @@ -16,7 +17,7 @@ public class ClimberCommand extends Command { * @param climberSubsystem The instance of {@link ClimberSubsystem} * @param controller A {@link Controller} to control the climber */ - public ClimberCommand(ClimberSubsystem climberSubsystem, Controller controller) { + public ClimberCommand(ClimberSubsystem climberSubsystem, CommandXboxController controller) { this.climberSubsystem = climberSubsystem; this.controller = controller; addRequirements(climberSubsystem); @@ -24,13 +25,13 @@ public ClimberCommand(ClimberSubsystem climberSubsystem, Controller controller) @Override public void execute() { - if (controller.dpadDown.getAsBoolean()) { + if (controller.povDown().getAsBoolean()) { climberSubsystem.setClimberSpeed(1); - } else if (controller.dpadUp.getAsBoolean()) { + } else if (controller.povUp().getAsBoolean()) { climberSubsystem.setClimberSpeed(-1); - } else if (controller.dpadLeft.getAsBoolean()) { + } else if (controller.povLeft().getAsBoolean()) { climberSubsystem.setLockSpeed(0.5); - } else if (controller.dpadRight.getAsBoolean()) { + } else if (controller.povRight().getAsBoolean()) { climberSubsystem.setLockSpeed(-0.5); } else { climberSubsystem.setClimberSpeed(0); diff --git a/src/main/java/org/blackknights/utils/Controller.java b/src/main/java/org/blackknights/utils/Controller.java deleted file mode 100644 index c6b5593..0000000 --- a/src/main/java/org/blackknights/utils/Controller.java +++ /dev/null @@ -1,76 +0,0 @@ -/* Black Knights Robotics (C) 2025 */ -package org.blackknights.utils; - -import edu.wpi.first.wpilibj.XboxController; -import edu.wpi.first.wpilibj2.command.button.JoystickButton; -import edu.wpi.first.wpilibj2.command.button.POVButton; - -/** A wrapper class for {@link XboxController} to provide easier bindings */ -public class Controller extends XboxController { - - public JoystickButton leftBumper; - public JoystickButton rightBumper; - - public JoystickButton leftTrigger; - public JoystickButton rightTrigger; - - public JoystickButton yButton; - public JoystickButton aButton; - public JoystickButton bButton; - public JoystickButton xButton; - - public JoystickButton startButton; - public JoystickButton selectButton; - - public JoystickButton leftStickButton; - public JoystickButton rightStickButton; - - public POVButton dpadUp; - public POVButton dpadDown; - public POVButton dpadLeft; - public POVButton dpadRight; - - /** - * Create a new instance of controller - * - * @param port The port of the controller as specified on DriverStation - */ - public Controller(int port) { - super(port); - - leftTrigger = new JoystickButton(this, XboxController.Axis.kLeftTrigger.value); - rightTrigger = new JoystickButton(this, XboxController.Axis.kRightTrigger.value); - - leftBumper = new JoystickButton(this, XboxController.Button.kLeftBumper.value); - rightBumper = new JoystickButton(this, XboxController.Button.kRightBumper.value); - - yButton = new JoystickButton(this, XboxController.Button.kY.value); - aButton = new JoystickButton(this, XboxController.Button.kA.value); - bButton = new JoystickButton(this, XboxController.Button.kB.value); - xButton = new JoystickButton(this, XboxController.Button.kX.value); - - startButton = new JoystickButton(this, XboxController.Button.kStart.value); - selectButton = new JoystickButton(this, XboxController.Button.kBack.value); - - leftStickButton = new JoystickButton(this, XboxController.Button.kLeftStick.value); - rightStickButton = new JoystickButton(this, XboxController.Button.kRightStick.value); - - dpadUp = new POVButton(this, 0); - dpadDown = new POVButton(this, 180); - dpadLeft = new POVButton(this, 270); - dpadRight = new POVButton(this, 90); - } - - /** - * Check if the controller has input from the sticks - * - * @param deadzone Controller deadzone - * @return If the controller has input - */ - public boolean hasStickInput(double deadzone) { - return Math.abs(getLeftX()) > deadzone - || Math.abs(getLeftY()) > deadzone - || Math.abs(getRightX()) > deadzone - || Math.abs(getRightY()) > deadzone; - } -}