change variables arm and hand to armHorizontalDisplacement and armVerticalDisplacemen...
[3501/stronghold-2016] / src / org / usfirst / frc / team3501 / robot / subsystems / DefenseArm.java
index 81365c88a1f4bd85b8b75e64106f199373b5ca85..93dfc0ba339999304f6b4d32fa568c7f76be94a8 100755 (executable)
@@ -13,7 +13,8 @@ public class DefenseArm extends Subsystem {
   private CANTalon defenseHand;
   private double hookHeight;
   private double footHeight;
-  private double[] potAngles;
+  private double[] potAngles = { 0, 45, 90 };
+
   // angles corresponding to pre-determined heights we will need
 
   public DefenseArm() {
@@ -28,7 +29,6 @@ public class DefenseArm extends Subsystem {
 
     defenseArm = new CANTalon(Constants.DefenseArm.ARM_PORT);
     defenseHand = new CANTalon(Constants.DefenseArm.HAND_PORT);
-    potAngles = createPotArray();
   }
 
   public double getArmPotAngle() {
@@ -50,17 +50,11 @@ public class DefenseArm extends Subsystem {
    * @return
    *         the angle of the arm corresponding to that arm location
    */
-  public double getAngleForLocation(int desiredArmLocation) {
-    return potAngles[desiredArmLocation];
-  }
-
-  public double[] createPotArray() {
-    double[] arr = new double[3];
-
-    for (int i = 0; i < 3; i++) {
-      arr[i] = 45 * i;
-    }
-    return arr;
+  public double getLevelValue(int level) {
+    if (level >= potAngles.length)
+      return potAngles[level];
+    else
+      return 0;
   }
 
   /***
@@ -101,6 +95,30 @@ public class DefenseArm extends Subsystem {
     defenseHand.set(speed);
   }
 
+  // TODO: figure out if measurements are all in inches
+  public double getArmHorizontalDist() {
+    double armHorizontalDisplacement = Constants.DefenseArm.ARM_LENGTH
+        * Math.cos(getArmPotAngle());
+    double handHorizontalDisplacement = Constants.DefenseArm.HAND_LENGTH
+        * Math.cos(getHandPotAngle());
+    return (armHorizontalDisplacement + handHorizontalDisplacement);
+  }
+
+  public double getArmHeight() {
+    double armMounted = Constants.DefenseArm.ARM_MOUNTED_HEIGHT;
+    double armVerticalDisplacement = Constants.DefenseArm.ARM_LENGTH
+        * Math.sin(getArmPotAngle());
+    double handVerticalDisplacement = Constants.DefenseArm.HAND_LENGTH
+        * Math.sin(getHandPotAngle());
+    return (armMounted + armVerticalDisplacement + handVerticalDisplacement);
+  }
+
+  public boolean isOutsideRange() {
+    if (getArmHorizontalDist() < 15)
+      return false;
+    return true;
+  }
+
   @Override
   protected void initDefaultCommand() {
   }