create and fill setArmToAngle command
authorShaina Chen <shaina.sierra@gmail.com>
Wed, 10 Feb 2016 04:25:36 +0000 (20:25 -0800)
committerShaina Chen <shaina.sierra@gmail.com>
Wed, 10 Feb 2016 04:25:36 +0000 (20:25 -0800)
src/org/usfirst/frc/team3501/robot/commands/SetArmToAngle.java [new file with mode: 0755]

diff --git a/src/org/usfirst/frc/team3501/robot/commands/SetArmToAngle.java b/src/org/usfirst/frc/team3501/robot/commands/SetArmToAngle.java
new file mode 100755 (executable)
index 0000000..02d6e82
--- /dev/null
@@ -0,0 +1,60 @@
+package org.usfirst.frc.team3501.robot.commands;
+
+import org.usfirst.frc.team3501.robot.Robot;
+
+import edu.wpi.first.wpilibj.command.Command;
+
+public class SetArmToAngle extends Command {
+  private static final double THRESHOLD = 0.1;
+  private double speed;
+  private double targetPosition;
+  private double currentPosition;
+  private boolean isDecreasing = false;
+
+  public SetArmToAngle(double speed, double targetPosition) {
+    requires(Robot.defenseArm);
+
+    this.speed = speed;
+    this.targetPosition = targetPosition;
+  }
+
+  @Override
+  public void initialize() {
+    currentPosition = Robot.defenseArm.getArmPotAngle();
+
+    if (currentPosition > targetPosition) {
+      Robot.defenseArm.setArmSpeed(-speed);
+      isDecreasing = true;
+    } else {
+      Robot.defenseArm.setArmSpeed(speed);
+      isDecreasing = false;
+    }
+  }
+
+  @Override
+  public void execute() {
+
+  }
+
+  @Override
+  public boolean isFinished() {
+    currentPosition = Robot.defenseArm.getArmPotAngle();
+
+    if (isDecreasing == true) {
+      return (currentPosition <= targetPosition + THRESHOLD);
+    } else {
+      return (currentPosition >= targetPosition - THRESHOLD);
+    }
+  }
+
+  @Override
+  public void end() {
+    Robot.defenseArm.setArmSpeed(0);
+  }
+
+  @Override
+  protected void interrupted() {
+    end();
+  }
+
+}