competition fixes
[3501/2017steamworks] / src / org / usfirst / frc / team3501 / robot / commands / intake / RunIntakeContinuous.java
index 961c3fc3b1a9abcf3eb6b5e69730401ff6cf92e8..5d26e02220d7b580d0b7941ff57b1c688e46fc49 100644 (file)
@@ -7,41 +7,46 @@ import edu.wpi.first.wpilibj.command.Command;
 
 /***
  *
- * Runs the intake continuously.
+ * Runs the intake continuously when button is pressed, and when button is not
+ * pressed does not run.
+ *
+ * Intended to be run inside a .whileHeld() call on a button in OI
  *
  * @author Meeta
  *
  */
 public class RunIntakeContinuous extends Command {
-  // create setter method for speed, use setSpeed method to do end() by setting
-  // speed to 0
+  private Intake intake = Robot.getIntake();
+
+  private double previousMotorValue = 0;
+  private double targetMotorValue = intake.INTAKE_SPEED;
 
   public RunIntakeContinuous() {
-    requires(Robot.getIntake());
+    requires(intake);
   }
 
   @Override
   protected boolean isFinished() {
-    // TODO Auto-generated method stub
-    return true;
+    return false;
   }
 
   // Called just before this Command runs the first time
   @Override
   protected void initialize() {
-
   }
 
   // Called repeatedly when this Command is scheduled to run
   @Override
   protected void execute() {
-    Robot.getIntake().setSpeed(Robot.getIntake().INTAKE_SPEED);
+    double motorValue = (6 * previousMotorValue + targetMotorValue) / 7;
+    previousMotorValue = motorValue;
+    intake.setSpeed(motorValue);
   }
 
   // Called once after isFinished returns true
   @Override
   protected void end() {
-    Intake.intake.setSpeed(0);
+    Robot.getIntake().stopIntake();
   }
 
   // Called when another command which requires one or more of the same