X-Git-Url: http://challenge-bot.com/repos/?a=blobdiff_plain;f=src%2Forg%2Fusfirst%2Ffrc%2Fteam3501%2Frobot%2Fsubsystems%2FDefenseArm.java;h=9b745760186031c8c9f4fe0b4e0b599ec500fc4e;hb=28ad5f35ce7254ee65c1b0cc5fa198a21df41efd;hp=7e57dbe24884e976e4025b66139202dfa9512352;hpb=dac91bffe7e85bdb15f37db44e732d6580d1e2d4;p=3501%2Fstronghold-2016 diff --git a/src/org/usfirst/frc/team3501/robot/subsystems/DefenseArm.java b/src/org/usfirst/frc/team3501/robot/subsystems/DefenseArm.java index 7e57dbe2..9b745760 100755 --- a/src/org/usfirst/frc/team3501/robot/subsystems/DefenseArm.java +++ b/src/org/usfirst/frc/team3501/robot/subsystems/DefenseArm.java @@ -1,61 +1,101 @@ -package org.usfirst.frc.team3501.robot.subsystems; - -import org.usfirst.frc.team3501.robot.Constants; - -import edu.wpi.first.wpilibj.AnalogPotentiometer; -import edu.wpi.first.wpilibj.CANTalon; -import edu.wpi.first.wpilibj.command.Subsystem; - -public class DefenseArm extends Subsystem { - // Defense arm related objects - public AnalogPotentiometer defenseArmPotentiometer; - public AnalogPotentiometer defenseHandPotentiometer; - public CANTalon defenseArmMotor; - public CANTalon defenseHandMotor; - public double hookHeight; - public double footHeight; - - // Defense arm specific constants that relate to the degrees per pulse value - // for the potentiometers - // private final static double PULSES_PER_ROTATION = 1; // in pulses - public final static double FULL_RANGE = 270.0; // in degrees - public final static double OFFSET = -135.0; // in degrees - public final static double[] armPotValue = { 0.0, 45.0, 90.0 }; // 3 level - - // array; - - // do we want to use a hashmap?? - // angles at 0,45,90 (Potentiometer value readings) - // degrees - - public DefenseArm() { - defenseArmPotentiometer = new AnalogPotentiometer( - Constants.DefenseArm.ARM_CHANNEL, - FULL_RANGE, OFFSET); - defenseArmMotor = new CANTalon(Constants.DefenseArm.ARM_PORT); - defenseHandMotor = new CANTalon(Constants.DefenseArm.HAND_PORT); - } - - /*** - * This method gets the height of the hook from the ground. The hook is - * attached to the end of the hand, which is attached to the arm. - * - * @return hookHeight gets height of hook from ground. The hook is attached to - * the end of the hand, which is attached the arm. - * - */ - - public double getHookHeight() { - - return hookHeight; - } - - public double getFootHeight() { - - return footHeight; - } - - @Override - protected void initDefaultCommand() { - } -} +package org.usfirst.frc.team3501.robot.subsystems; + +import org.usfirst.frc.team3501.robot.Constants; + +import edu.wpi.first.wpilibj.AnalogPotentiometer; +import edu.wpi.first.wpilibj.CANTalon; +import edu.wpi.first.wpilibj.command.Subsystem; + +public class DefenseArm extends Subsystem { + private AnalogPotentiometer defenseArmPotentiometer; + private AnalogPotentiometer defenseHandPotentiometer; + private CANTalon defenseArm; + private CANTalon defenseHand; + private double hookHeight; + private double footHeight; + private double[] potAngles = { 0, 45, 90 }; + + // angles corresponding to pre-determined heights we will need + + public DefenseArm() { + defenseArmPotentiometer = new AnalogPotentiometer( + Constants.DefenseArm.ARM_CHANNEL, + Constants.DefenseArm.FULL_RANGE, + Constants.DefenseArm.OFFSET); + defenseHandPotentiometer = new AnalogPotentiometer( + Constants.DefenseArm.HAND_CHANNEL, + Constants.DefenseArm.FULL_RANGE, + Constants.DefenseArm.OFFSET); + + defenseArm = new CANTalon(Constants.DefenseArm.ARM_PORT); + defenseHand = new CANTalon(Constants.DefenseArm.HAND_PORT); + } + + public double getArmPotAngle() { + return defenseArmPotentiometer.get(); + } + + public double getHandPotAngle() { + return defenseHandPotentiometer.get(); + } + + /*** + * This method takes an arm location as input (range of [0,2]) + * Returns the angle of the arm corresponding to that arm location + * + * @param desiredArmLocation + * takes an arm location ranging from [0,2] + * 0 is the lowest position of arm + * 2 is the highest position of arm + * @return + * the angle of the arm corresponding to that arm location + */ + public double getLevelValue(int level) { + if (level >= potAngles.length) + return potAngles[level]; + else + return 0; + } + + /*** + * This method sets the voltage of the arm motor. The range is from [-1,1]. A + * negative voltage makes the direction of the motor go backwards. + * + * @param speed + * The voltage that you set the motor at. The range of the voltage of + * the arm motor is from [-1,1]. A + * negative voltage makes the direction of the motor go backwards. + */ + + public void setArmSpeed(double speed) { + if (speed > 1) + speed = 1; + else if (speed < -1) + speed = -1; + + defenseArm.set(speed); + } + + /*** + * This method sets the voltage of the hand motor. The range is from [-1,1]. A + * negative voltage makes the direction of the motor go backwards. + * + * @param speed + * The voltage that you set the motor at. The range of the voltage of + * the hand motor is from [-1,1]. A + * negative voltage makes the direction of the motor go backwards. + */ + + public void setHandSpeed(double speed) { + if (speed > 1) + speed = 1; + else if (speed < -1) + speed = -1; + + defenseHand.set(speed); + } + + @Override + protected void initDefaultCommand() { + } +}