5a76b5c182b377c6892b64c75572ca0857fa44ec
[3501/2017steamworks] / src / org / usfirst / frc / team3501 / robot / commands / climber / RunWinch.java
1 package org.usfirst.frc.team3501.robot.commands.climber;
2
3 import org.usfirst.frc.team3501.robot.Robot;
4 import org.usfirst.frc.team3501.robot.subsystems.Climber;
5
6 import edu.wpi.first.wpilibj.command.Command;
7
8 /**
9 * This command runs the winch at a specified speed and time in seconds when the
10 * button triggering it is pressed. This command also makes the drive train
11 * motors run because the winch is controlled by the drive train.
12 *
13 * pre-condition: This command is run by a button in OI. The robot must be
14 * attached to the rope.
15 *
16 * post-condition: Winch motor set to a specified speed for a specified time.
17 *
18 * @param motorVal
19 * value range is from -1 to 1
20 * @param time
21 * in seconds
22 * @author shivanighanta
23 *
24 */
25
26 public class RunWinch extends Command {
27 Climber climber = Robot.getClimber();
28
29 private double time;
30 private double motorVal;
31
32 /**
33 * See JavaDoc comment in class for details
34 *
35 * @param time
36 * time in seconds to run the winch
37 * @param motorVal
38 * value range is from -1 to 1
39 */
40 public RunWinch(double time, double motorVal) {
41 requires(climber);
42 this.time = time;
43 this.motorVal = motorVal;
44 }
45
46 @Override
47 protected void initialize() {
48 }
49
50 @Override
51 protected void execute() {
52 climber.setMotorValues(motorVal);
53 }
54
55 @Override
56 protected boolean isFinished() {
57 return timeSinceInitialized() >= time;
58 }
59
60 @Override
61 protected void end() {
62 climber.stop();
63 }
64
65 @Override
66 protected void interrupted() {
67 end();
68 }
69 }