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;
@Override
protected void initialize() {
- Robot.shooter.resetCatapult();
+ if (Robot.shooter.getCatapult1State() == Constants.Shooter.SHOOT
+ || Robot.shooter.getCatapult2State() == Constants.Shooter.SHOOT)
+ Robot.shooter.resetCatapult();
}
@Override
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());
}
}
/***
* 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 {
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
* 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.
/***
* 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
*/
/***
* 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() {
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;
/***
* 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 {
catapult2.set(Constants.Shooter.RESET);
}
+ public Value getCatapult1State() {
+ return catapult1.get();
+ }
+
+ public Value getCatapult2State() {
+ return catapult2.get();
+ }
+
@Override
protected void initDefaultCommand() {
}