added limits to the white arm so it doesn't over extend, also it cant retract if it is extended and needs to restart so that will need to be fixed.

This commit is contained in:
Spencer
2021-11-20 16:11:08 -06:00
parent 7caa230822
commit 056f539abd
2 changed files with 60 additions and 46 deletions

View File

@@ -74,16 +74,16 @@ public class Robot {
public static final int COUNTS_PER_REVOLUTION = 1000;
public DcMotor driveWarehouseLeft, driveWarehouseRight, driveGoalLeft, driveGoalRight,
collectorArmRiser, collectorArmBobbin, depositorArmRiser, depositorArmBobbin;
orangeArmRiser, orangeArmBobbin, whiteArmRiser, whiteArmBobbin;
// Collector
public Servo collectorDispenser;
public CRServo turretServo1;
public Servo orangeDispenser;
public CRServo turretServoOrange;
// Depositor
public Servo depositorDispenser;
public Servo whiteDispenser;
// Depositor, and carousel
public CRServo turretServo2, carouselWheel, collectorOrange, collectorWhite;
public CRServo turretServoWhite, carouselWheel, collectorOrange, collectorWhite;
@@ -207,24 +207,24 @@ public class Robot {
}
private void initCollector() {
collectorArmBobbin = engine.hardwareMap.dcMotor.get("collectorArmBobbin");
collectorDispenser = engine.hardwareMap.servo.get("collectorDispenser");
collectorArmBobbin.setDirection(DcMotorSimple.Direction.FORWARD);
turretServo1 = engine.hardwareMap.crservo.get("turretServo1");
collectorArmRiser = engine.hardwareMap.dcMotor.get("collectorArmRiser");
collectorArmRiser.setDirection(DcMotorSimple.Direction.FORWARD);
collectorArmRiser.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
orangeArmBobbin = engine.hardwareMap.dcMotor.get("orangeArmBobbin");
orangeDispenser = engine.hardwareMap.servo.get("orangeDispenser");
orangeArmBobbin.setDirection(DcMotorSimple.Direction.FORWARD);
turretServoOrange = engine.hardwareMap.crservo.get("turretServoOrange");
orangeArmRiser = engine.hardwareMap.dcMotor.get("orangeArmRiser");
orangeArmRiser.setDirection(DcMotorSimple.Direction.FORWARD);
orangeArmRiser.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
collectorOrange = engine.hardwareMap.crservo.get("collectorOrange");
}
private void initDepositor(){
depositorDispenser = engine.hardwareMap.servo.get("depositorDispenser");
depositorArmBobbin = engine.hardwareMap.dcMotor.get("depositorArmBobbin");
depositorArmBobbin.setDirection(DcMotorSimple.Direction.REVERSE);
turretServo2 = engine.hardwareMap.crservo.get("turretServo2");
depositorArmRiser = engine.hardwareMap.dcMotor.get("depositorArmRiser");
depositorArmRiser.setDirection(DcMotorSimple.Direction.FORWARD);
depositorArmRiser.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
whiteDispenser = engine.hardwareMap.servo.get("whiteDispenser");
whiteArmBobbin = engine.hardwareMap.dcMotor.get("whiteArmBobbin");
whiteArmBobbin.setDirection(DcMotorSimple.Direction.REVERSE);
turretServoWhite = engine.hardwareMap.crservo.get("turretServoWhite");
whiteArmRiser = engine.hardwareMap.dcMotor.get("whiteArmRiser");
whiteArmRiser.setDirection(DcMotorSimple.Direction.FORWARD);
whiteArmRiser.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
collectorWhite = engine.hardwareMap.crservo.get("collectorWhite");
}

View File

@@ -8,18 +8,24 @@ import org.timecrafters.FreightFrenzy.Competition.Common.Robot;
public class TeleOpState extends CyberarmState {
Robot robot;
double maxDriveSpeed, maxCollectorArmSpeed, maxDepositorArmSpeed;
int maxArmTravelDistance;
public TeleOpState(Robot robot) {
this.robot = robot;
maxDriveSpeed = 1;
maxCollectorArmSpeed = 0.7;
maxDepositorArmSpeed = 0.7;
maxCollectorArmSpeed = 0.8;
maxDepositorArmSpeed = 0.8;
maxArmTravelDistance = 4000;
}
@Override
public void start() {
super.start();
// FIXME: Don't reset when doing autonomous stuff
// FIXME: Fix unable to retract if reset mid-match
robot.whiteArmBobbin.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER);
robot.whiteArmBobbin.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
}
@Override
@@ -35,18 +41,18 @@ public class TeleOpState extends CyberarmState {
// dispenser powered
if (engine.gamepad1.b){
robot.collectorDispenser.setPosition(.5);
robot.orangeDispenser.setPosition(.5);
}
// if not pressed dispenser off
else {
robot.collectorDispenser.setPosition(0);
robot.orangeDispenser.setPosition(0);
}
// if one of triggers pressed arm extends or unextends
robot.collectorArmBobbin.setPower(engine.gamepad1.left_trigger * maxCollectorArmSpeed);
robot.orangeArmBobbin.setPower(engine.gamepad1.left_trigger * maxCollectorArmSpeed);
if (engine.gamepad1.left_trigger <= 0){
robot.collectorArmBobbin.setPower(-engine.gamepad1.right_trigger * maxCollectorArmSpeed);
robot.orangeArmBobbin.setPower(-engine.gamepad1.right_trigger * maxCollectorArmSpeed);
}
// if either of these buttons... move the servo
@@ -54,33 +60,33 @@ public class TeleOpState extends CyberarmState {
if (engine.gamepad1.dpad_right || engine.gamepad1.dpad_left) {
if (engine.gamepad1.dpad_right) {
robot.turretServo1.setPower(-1);
robot.turretServoOrange.setPower(-1);
}
if (engine.gamepad1.dpad_left) {
robot.turretServo1.setPower(1);
robot.turretServoOrange.setPower(1);
}
}
// if neither of these buttons... power off
else {
robot.turretServo1.setPower(0);
robot.turretServoOrange.setPower(0);
}
// if dpad verticles pressed arm rises or lowers...
if (engine.gamepad1.dpad_up || engine.gamepad1.dpad_down) {
if (engine.gamepad1.dpad_up) {
robot.collectorArmRiser.setPower(1);
robot.orangeArmRiser.setPower(1);
}
if (engine.gamepad1.dpad_down) {
robot.collectorArmRiser.setPower(-1);
robot.orangeArmRiser.setPower(-1);
}
}
// nothing pressed nothing move...
else {
robot.collectorArmRiser.setPower(0);
robot.orangeArmRiser.setPower(0);
}
// if bumpers pressed intake wheel move...
@@ -112,19 +118,27 @@ public class TeleOpState extends CyberarmState {
// GamePad 2
// if triggers are pressed then arm extends or unextends
robot.depositorArmBobbin.setPower(engine.gamepad2.left_trigger * maxDepositorArmSpeed);
if (robot.whiteArmBobbin.getCurrentPosition() <= maxArmTravelDistance && engine.gamepad2.left_trigger > 0) {
robot.whiteArmBobbin.setPower(engine.gamepad2.left_trigger * maxDepositorArmSpeed);
} else {
if (engine.gamepad2.left_trigger <= 0 && robot.whiteArmBobbin.getCurrentPosition() >= 0) {
robot.whiteArmBobbin.setPower(-engine.gamepad2.right_trigger * maxDepositorArmSpeed);
} else {
robot.whiteArmBobbin.setPower(0);
}
if (engine.gamepad2.left_trigger <= 0) {
robot.depositorArmBobbin.setPower(-engine.gamepad2.right_trigger * maxDepositorArmSpeed);
}
// if b is pressed then depositor door opens, if not pressed not opening.
if (engine.gamepad2.b){
robot.depositorDispenser.setPosition(.5);
robot.whiteDispenser.setPosition(.5);
}
else {
robot.depositorDispenser.setPosition(0);
robot.whiteDispenser.setPosition(0);
}
// if either of these buttons move the servo
@@ -132,32 +146,32 @@ public class TeleOpState extends CyberarmState {
if (engine.gamepad2.dpad_right || engine.gamepad2.dpad_left) {
if (engine.gamepad2.dpad_right) {
robot.turretServo2.setPower(-1);
robot.turretServoWhite.setPower(-1);
}
if (engine.gamepad2.dpad_left) {
robot.turretServo2.setPower(1);
robot.turretServoWhite.setPower(1);
}
}
// if neither of these buttons power off
else {
robot.turretServo2.setPower(0);
robot.turretServoWhite.setPower(0);
}
// if dpad verticles pressed arm rises or lowers
if (engine.gamepad2.dpad_down || engine.gamepad2.dpad_up) {
if (engine.gamepad2.dpad_up) {
robot.depositorArmRiser.setPower(1);
robot.whiteArmRiser.setPower(-1);
}
if (engine.gamepad2.dpad_down) {
robot.depositorArmRiser.setPower(-1);
robot.whiteArmRiser.setPower(1);
}
}
// nothing pressed nothing move...
else {
robot.depositorArmRiser.setPower(0);
robot.whiteArmRiser.setPower(0);
}
if (engine.gamepad2.left_bumper || engine.gamepad2.right_bumper) {
@@ -178,8 +192,8 @@ public class TeleOpState extends CyberarmState {
}
@Override
public void telemetry() {
engine.telemetry.addData("white arm extension", robot.whiteArmBobbin.getCurrentPosition());
}
}