more photogate incorporation edits
authorniyatisriram <niyatisriram@gmail.com>
Sun, 20 Mar 2016 01:20:12 +0000 (18:20 -0700)
committerniyatisriram <niyatisriram@gmail.com>
Sun, 20 Mar 2016 01:20:12 +0000 (18:20 -0700)
src/org/usfirst/frc/team3501/robot/Robot.java
src/org/usfirst/frc/team3501/robot/commands/intakearm/Photogate.java
src/org/usfirst/frc/team3501/robot/commands/intakearm/RunIntake.java

index 5bc3c0123be8ca2d5354bdfd733aae0965e5dbdd..30926c7af8a9e6b0168b2fa1181e4b59bda65ba0 100644 (file)
@@ -4,6 +4,7 @@ import org.usfirst.frc.team3501.robot.Constants.Auton;
 import org.usfirst.frc.team3501.robot.Constants.Defense;
 import org.usfirst.frc.team3501.robot.commands.auton.ChooseStrategy;
 import org.usfirst.frc.team3501.robot.commands.driving.SetLowGear;
+import org.usfirst.frc.team3501.robot.commands.intakearm.Photogate;
 import org.usfirst.frc.team3501.robot.subsystems.DriveTrain;
 import org.usfirst.frc.team3501.robot.subsystems.IntakeArm;
 import org.usfirst.frc.team3501.robot.subsystems.Shooter;
@@ -18,7 +19,7 @@ public class Robot extends IterativeRobot {
   public static DriveTrain driveTrain;
   public static Shooter shooter;
   public static IntakeArm intakeArm;
-  // public static Photogate photogate;
+  public static Photogate photogate;
 
   // Sendable Choosers send a drop down menu to the Smart Dashboard.
   SendableChooser positionChooser;
@@ -32,7 +33,7 @@ public class Robot extends IterativeRobot {
     intakeArm = new IntakeArm();
 
     oi = new OI();
-    // photogate = new Photogate();
+    photogate = new Photogate();
 
     initializeSendableChoosers();
     addPositionChooserOptions();
index 8b137891791fe96927ad78e64b0aad7bded08bdc..9e6c2e8b5f1c000c8dd4c6b19c3542d9dbe6cea0 100644 (file)
@@ -1 +1,50 @@
+package org.usfirst.frc.team3501.robot.commands.intakearm;
 
+import edu.wpi.first.wpilibj.AnalogInput;
+
+/***
+ * The photogate is a pair of IR LED and phototransistor sensor that uses a
+ * reflective method to sense the presence of the boulder within the robot's
+ * shooting chamber. This class specifically checks for the ball's presence
+ * using a threshold of voltages outputted from the phototransistor.
+ *
+ * @author niyatisriram
+ */
+public class Photogate extends AnalogInput {
+
+  private double threshold = 1.8;
+
+  /***
+   * The constructor inputs the channel of the transistor and the threshold
+   * value.
+   * The threshold is a specific value, representing the outputted voltage of
+   * the phototransistor. This value will be somewhere within the range [0,
+   * 4095] Find the value by testing and finding an average value for which the
+   * ball is present when the output is greater, and absent when the output is
+   * less.
+   */
+  public Photogate() {
+    super(0);
+    this.threshold = threshold;
+  }
+
+  /***
+   * @return whether the ball is present or not
+   *         USE TO DECIDE WHEN OUTTAKE NEEDS TO HAPPEN FOR BALL TO BE SECURE
+   */
+  public boolean isBallPresent() {
+    if (this.getVoltage() > threshold)
+      return true;
+    else
+      return false;
+
+  }
+
+  /***
+   * @param threshold
+   *          (range [0, 4095])
+   */
+  public void setThreshold(int threshold) {
+    this.threshold = threshold;
+  }
+}
index 000c68f9e6736d9a4f74601d21dc70f6e9a844d5..7625d6ab4f60904ef47232dcc1c25d94a4497f43 100644 (file)
@@ -25,6 +25,8 @@ public class RunIntake extends Command {
 
   @Override
   protected void execute() {
+    // if Photogate.() {
+    Robot.intakeArm.outputBall();
   }
 
   @Override