From 6b06b2bc90b7e43815f63ba0b47f85457803f9fc Mon Sep 17 00:00:00 2001 From: Cindy Zhang Date: Sun, 14 Feb 2016 16:47:31 -0800 Subject: [PATCH] adjust OI code to the new packaging system --- src/org/usfirst/frc/team3501/robot/OI.java | 129 ++++++++++++++++++--- 1 file changed, 112 insertions(+), 17 deletions(-) diff --git a/src/org/usfirst/frc/team3501/robot/OI.java b/src/org/usfirst/frc/team3501/robot/OI.java index 1c891af0..b136a3ca 100644 --- a/src/org/usfirst/frc/team3501/robot/OI.java +++ b/src/org/usfirst/frc/team3501/robot/OI.java @@ -1,38 +1,133 @@ package org.usfirst.frc.team3501.robot; -import org.usfirst.frc.team3501.robot.commands.shooter.ChangeShooterSpeed; -import org.usfirst.frc.team3501.robot.commands.shooter.SetShooterSpeed; +import org.usfirst.frc.team3501.robot.commands.auton.PassChevalDeFrise; +import org.usfirst.frc.team3501.robot.commands.auton.PassDrawBridge; +import org.usfirst.frc.team3501.robot.commands.auton.PassSallyPort; +import org.usfirst.frc.team3501.robot.commands.intakearm.IntakeBall; +import org.usfirst.frc.team3501.robot.commands.scaler.ExtendLift; +import org.usfirst.frc.team3501.robot.commands.scaler.RetractLift; +import org.usfirst.frc.team3501.robot.commands.shooter.Shoot; +import org.usfirst.frc.team3501.robot.commands.shooter.runShooter; +import edu.wpi.first.wpilibj.DigitalInput; import edu.wpi.first.wpilibj.Joystick; import edu.wpi.first.wpilibj.buttons.Button; import edu.wpi.first.wpilibj.buttons.JoystickButton; +import edu.wpi.first.wpilibj.command.Scheduler; public class OI { + public static boolean isScalingMode = false; + public static boolean isCompactRobot = false; + public static Joystick leftJoystick; public static Joystick rightJoystick; - public static Button decrementShooterSpeed; - public static Button incrementShooterSpeed; - public static Button outputCurrentShooterSpeed; - public static Button trigger; + + // first column of arcade buttons - getting past defenses + public static DigitalButton passPortcullis; + public static DigitalButton passChevalDeFrise; + public static DigitalButton passDrawbridge; + public static DigitalButton passSallyPort; + + // second column of arcade buttons - different angles for intake arm + // TO DO: change position numbers to angle values (?) + public static DigitalButton lowerChevalDeFrise; + public static DigitalButton moveToIntakeBoulder; + public static DigitalButton poiseAboveChevalDeFrise; + public static DigitalButton moveIntakeArmInsideRobot; + + // left joystick buttons + public static Button toggleShooter; + public static Button SpinRobot180_1; // both do the same thing, just two + public static Button SpinRobot180_2; // different buttons + public static Button compactRobot_1; + public static Button compactRobot_2; + + // right joystick buttons + public static Button intakeBoulder; + public static Button shootBoulder; + + // button to change robot to the scaling mode + public static DigitalButton toggleScalingMode; public OI() { leftJoystick = new Joystick(Constants.OI.LEFT_STICK_PORT); rightJoystick = new Joystick(Constants.OI.RIGHT_STICK_PORT); - decrementShooterSpeed = new JoystickButton(rightJoystick, - Constants.OI.DECREMENT_SHOOTER_SPEED_PORT); - decrementShooterSpeed.whenPressed(new ChangeShooterSpeed(-0.1)); + passPortcullis = new DigitalButton( + new DigitalInput(Constants.OI.PASS_PORTCULLIS_PORT)); + passChevalDeFrise = new DigitalButton( + new DigitalInput(Constants.OI.PASS_CHEVAL_DE_FRISE_PORT)); + passDrawbridge = new DigitalButton( + new DigitalInput(Constants.OI.PASS_DRAWBRIDGE)); + passSallyPort = new DigitalButton( + new DigitalInput(Constants.OI.PASS_SALLYPORT_PORT)); + + lowerChevalDeFrise = new DigitalButton( + new DigitalInput(Constants.OI.ARCADE_INTAKEARM_LEVEL_ONE_PORT)); + moveToIntakeBoulder = new DigitalButton( + new DigitalInput(Constants.OI.ARCADE_INTAKEARM_LEVEL_TWO_PORT)); + poiseAboveChevalDeFrise = new DigitalButton( + new DigitalInput(Constants.OI.ARCADE_INTAKEARM_LEVEL_THREE_PORT)); + moveIntakeArmInsideRobot = new DigitalButton( + new DigitalInput(Constants.OI.ARCADE_INTAKEARM_LEVEL_FOUR_PORT)); + + toggleShooter = new JoystickButton(leftJoystick, + Constants.OI.LEFT_JOYSTICK_TRIGGER_PORT); + SpinRobot180_1 = new JoystickButton(leftJoystick, + Constants.OI.LEFT_JOYSTICK_TOP_LEFT_PORT); + SpinRobot180_2 = new JoystickButton(leftJoystick, + Constants.OI.LEFT_JOYSTICK_TOP_RIGHT_PORT); + compactRobot_1 = new JoystickButton(leftJoystick, + Constants.OI.LEFT_JOYSTICK_TOP_CENTER_PORT); + compactRobot_2 = new JoystickButton(leftJoystick, + Constants.OI.LEFT_JOYSTICK_TOP_LOW_PORT); + + intakeBoulder = new JoystickButton(rightJoystick, + Constants.OI.RIGHT_JOYSTICK_TRIGGER_PORT); + shootBoulder = new JoystickButton(rightJoystick, + Constants.OI.RIGHT_JOYSTICK_THUMB_PORT); + + toggleScalingMode = new DigitalButton( + new DigitalInput(Constants.OI.SCALING_BUTTON_PORT)); + + passPortcullis.whenPressed(new PassPortcullis()); + passChevalDeFrise.whenPressed(new PassChevalDeFrise()); + passDrawbridge.whenPressed(new PassDrawBridge()); + passSallyPort.whenPressed(new PassSallyPort()); + + lowerChevalDeFrise + .whenPressed(/* TO DO: define this, and fill in commands */); + + if (toggleScalingMode.get()) { + if (!isScalingMode) { + isScalingMode = true; + if (!isCompactRobot) { + Scheduler.getInstance().add(new CompactRobot()); + isCompactRobot = true; + } + } else if (isScalingMode) { + isScalingMode = false; + Scheduler.getInstance().add(new CompactRobot()); + } + } + + if (!isScalingMode) { + toggleShooter.toggleWhenPressed(new runShooter()); + compactRobot_1.whenPressed(new CompactRobot()); + + intakeBoulder.whenPressed(new IntakeBall()); + shootBoulder.whenPressed(new Shoot()); - incrementShooterSpeed = new JoystickButton(rightJoystick, - Constants.OI.INCREMENT_SHOOTER_SPEED_PORT); - incrementShooterSpeed.whenPressed(new ChangeShooterSpeed(0.1)); + } else if (isScalingMode) { + toggleShooter.toggleWhenPressed(new WinchIn()); + compactRobot_1.whenPressed(new RetractLift()); - outputCurrentShooterSpeed = new JoystickButton(rightJoystick, - Constants.OI.SHOOT_PORT); + intakeBoulder.toggleWhenPressed(new WinchOut()); + shootBoulder.whenPressed(new ExtendLift()); + } - trigger = new JoystickButton(rightJoystick, Constants.OI.TRIGGER_PORT); - trigger.whenPressed(new SetShooterSpeed(0.5)); - trigger.whenReleased(new SetShooterSpeed(0.0)); + SpinRobot180_1 + .whenPressed(/* rotate robot 180, reorient joystick controls */); } } -- 2.30.2