add clean DriveForTime command
[3501/2015-FRC-Spark] / src / org / usfirst / frc3501 / RiceCatRobot / commands / DriveForTime.java
1 package org.usfirst.frc3501.RiceCatRobot.commands;
2
3 import org.usfirst.frc3501.RiceCatRobot.Robot;
4 import org.usfirst.frc3501.RiceCatRobot.RobotMap.Direction;
5
6 import edu.wpi.first.wpilibj.Timer;
7 import edu.wpi.first.wpilibj.command.Command;
8
9 /**
10 * This command takes a time in seconds which is how long it should run
11 *
12 */
13 public class DriveForTime extends Command {
14 private double seconds;
15 private Timer timer;
16 private double speed;
17
18 /***
19 * Drive at a fixed speed (speed) for a fixed time (seconds).
20 *
21 * @param seconds
22 * the number of seconds to drive
23 * @param speed
24 * a motor value in the range [-1, 1]. Negative numbers are
25 * interpreted as driving backwards. 0 is stopped.
26 */
27 public DriveForTime(double seconds, double speed) {
28 this.seconds = seconds;
29 this.speed = -speed; // note: setMotorSpeeds(-1, -1) would be
30 // forward full speed, so we take the opposite
31 // of the input to achieve this.
32 }
33
34 @Override
35 protected void initialize() {
36 this.setTimeout(seconds);
37 Robot.driveTrain.setMotorSpeeds(speed, speed);
38 }
39
40 @Override
41 protected void execute() {
42 // nothing here because motors are already set
43 }
44
45 @Override
46 protected boolean isFinished() {
47 return this.isTimedOut();
48 }
49
50 @Override
51 protected void end() {
52 Robot.driveTrain.stop();
53 }
54
55 @Override
56 protected void interrupted() {
57 end();
58 }
59 }