--- /dev/null
+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();
+ }
+
+}