From fee6b62e5434872f8f10c74874179a45e697205e Mon Sep 17 00:00:00 2001 From: Meryem Esa Date: Tue, 15 Mar 2016 18:26:41 -0700 Subject: [PATCH] implement ShootAtHighGoal and add some helper methods --- .../robot/commands/shooter/ResetCatapult.java | 5 ++++- .../commands/shooter/ShootAtHighGoal.java | 14 ++++++++++---- .../team3501/robot/subsystems/IntakeArm.java | 19 ++++++++++++------- .../team3501/robot/subsystems/Shooter.java | 13 +++++++++++-- 4 files changed, 37 insertions(+), 14 deletions(-) diff --git a/src/org/usfirst/frc/team3501/robot/commands/shooter/ResetCatapult.java b/src/org/usfirst/frc/team3501/robot/commands/shooter/ResetCatapult.java index ecdfce6e..3c46bf4d 100644 --- a/src/org/usfirst/frc/team3501/robot/commands/shooter/ResetCatapult.java +++ b/src/org/usfirst/frc/team3501/robot/commands/shooter/ResetCatapult.java @@ -1,5 +1,6 @@ package org.usfirst.frc.team3501.robot.commands.shooter; +import org.usfirst.frc.team3501.robot.Constants; import org.usfirst.frc.team3501.robot.Robot; import edu.wpi.first.wpilibj.command.Command; @@ -12,7 +13,9 @@ public class ResetCatapult extends Command { @Override protected void initialize() { - Robot.shooter.resetCatapult(); + if (Robot.shooter.getCatapult1State() == Constants.Shooter.SHOOT + || Robot.shooter.getCatapult2State() == Constants.Shooter.SHOOT) + Robot.shooter.resetCatapult(); } @Override diff --git a/src/org/usfirst/frc/team3501/robot/commands/shooter/ShootAtHighGoal.java b/src/org/usfirst/frc/team3501/robot/commands/shooter/ShootAtHighGoal.java index 5ecc8091..54e4d94f 100755 --- a/src/org/usfirst/frc/team3501/robot/commands/shooter/ShootAtHighGoal.java +++ b/src/org/usfirst/frc/team3501/robot/commands/shooter/ShootAtHighGoal.java @@ -1,29 +1,35 @@ package org.usfirst.frc.team3501.robot.commands.shooter; +import org.usfirst.frc.team3501.robot.Constants.IntakeArm; +import org.usfirst.frc.team3501.robot.Robot; +import org.usfirst.frc.team3501.robot.commands.intakearm.MoveIntakeArm; + import edu.wpi.first.wpilibj.command.CommandGroup; /** * This command group performs the sequence of steps to shoot at the high goal * - * pre-conditions: the catapult is down, a ball is in the intake, and the intake - * is in the up position + * pre-conditions: a ball is in the intake, and the intake is in the up position * * post-conditions: catapult is retracted, intake is extended */ public class ShootAtHighGoal extends CommandGroup { public ShootAtHighGoal() { - // check that the catapult is down and change accordingly - // (if photogate) check if ball is in intake // make sure intake is in up position and change accordingly + if (!Robot.intakeArm.isExtended()) + addSequential(new MoveIntakeArm(IntakeArm.RETRACT)); // shoot catapult pistons + addSequential(new FireCatapult()); // extend intake (ball actually shoots here) + addSequential(new MoveIntakeArm(IntakeArm.EXTEND)); // retract catapult pistons + addSequential(new ResetCatapult()); } } diff --git a/src/org/usfirst/frc/team3501/robot/subsystems/IntakeArm.java b/src/org/usfirst/frc/team3501/robot/subsystems/IntakeArm.java index c9c29dd2..cbd0f3ca 100755 --- a/src/org/usfirst/frc/team3501/robot/subsystems/IntakeArm.java +++ b/src/org/usfirst/frc/team3501/robot/subsystems/IntakeArm.java @@ -9,13 +9,13 @@ import edu.wpi.first.wpilibj.command.Subsystem; /*** * The IntakeArm consists of two rollers that are controlled by one motor, with * a potentiometer on it. - * + * * The motor controls the rollers, making them roll forwards and backwards. The * Intake rollers are on the back of the robot. As the rollers run, they intake * the ball. - * + * * @author superuser - * + * */ public class IntakeArm extends Subsystem { @@ -46,6 +46,11 @@ public class IntakeArm extends Subsystem { rightIntake.set(Constants.IntakeArm.EXTEND); } + public boolean isExtended() { + return (leftIntake.get() == Constants.IntakeArm.EXTEND + && rightIntake.get() == Constants.IntakeArm.EXTEND); + } + /*** * This method sets the voltage of the motor to intake the ball. The voltage * values are constants in Constants class @@ -70,7 +75,7 @@ public class IntakeArm extends Subsystem { * This method gets you the current voltage of the motor that controls the * intake arm roller. The range of voltage is from [-1,1]. A negative voltage * makes the motor run backwards. - * + * * @return Returns the voltage of the motor that controls the roller. The * range of the voltage goes from [-1,1]. A negative voltage indicates * that the motor is running backwards. @@ -83,7 +88,7 @@ public class IntakeArm extends Subsystem { /*** * This method checks to see if the presence of the ball inside is true or * false. - * + * * @return Returns whether the ball is inside as true or false */ @@ -94,10 +99,10 @@ public class IntakeArm extends Subsystem { /*** * This method checks to see if the motors controlling the rollers are * currently running. - * + * * @return Returns whether the motors are currently running, and returns the * state of the condition (true or false). - * + * */ public boolean areRollersRolling() { diff --git a/src/org/usfirst/frc/team3501/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team3501/robot/subsystems/Shooter.java index 95d69af9..c3500e2b 100755 --- a/src/org/usfirst/frc/team3501/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team3501/robot/subsystems/Shooter.java @@ -3,6 +3,7 @@ package org.usfirst.frc.team3501.robot.subsystems; import org.usfirst.frc.team3501.robot.Constants; import edu.wpi.first.wpilibj.DoubleSolenoid; +import edu.wpi.first.wpilibj.DoubleSolenoid.Value; import edu.wpi.first.wpilibj.command.Subsystem; /*** @@ -10,9 +11,9 @@ import edu.wpi.first.wpilibj.command.Subsystem; * motors. The piston controlling the platform pushes the ball onto the wheel. * The wheel is controlled by a motor, which is running before the ball is * pushed onto the wheel. The spinning wheel propels the ball. - * + * * @author superuser - * + * */ public class Shooter extends Subsystem { @@ -38,6 +39,14 @@ public class Shooter extends Subsystem { catapult2.set(Constants.Shooter.RESET); } + public Value getCatapult1State() { + return catapult1.get(); + } + + public Value getCatapult2State() { + return catapult2.get(); + } + @Override protected void initDefaultCommand() { } -- 2.30.2