diff --git a/TeamCode/src/main/java/dev/cyberarm/minibots/black/BlackMinibot.java b/TeamCode/src/main/java/dev/cyberarm/minibots/black/BlackMinibot.java new file mode 100644 index 0000000..2a0f2db --- /dev/null +++ b/TeamCode/src/main/java/dev/cyberarm/minibots/black/BlackMinibot.java @@ -0,0 +1,18 @@ +package dev.cyberarm.minibots.black; + +import com.arcrobotics.ftclib.hardware.motors.MotorEx; +import com.qualcomm.robotcore.hardware.HardwareMap; + +import dev.cyberarm.engine.V2.CyberarmEngine; + +public class BlackMinibot { + final public MotorEx leftDrive, RightDrive; + final private HardwareMap hardwareMap; + + public BlackMinibot() { + hardwareMap = CyberarmEngine.instance.hardwareMap; + + leftDrive = new MotorEx(hardwareMap, "leftDrive"); + RightDrive = new MotorEx(hardwareMap, "rightDrive"); + } +} diff --git a/TeamCode/src/main/java/dev/cyberarm/minibots/black/engines/BlackMinibotTeleOpEngine.java b/TeamCode/src/main/java/dev/cyberarm/minibots/black/engines/BlackMinibotTeleOpEngine.java new file mode 100644 index 0000000..3be8156 --- /dev/null +++ b/TeamCode/src/main/java/dev/cyberarm/minibots/black/engines/BlackMinibotTeleOpEngine.java @@ -0,0 +1,19 @@ +package dev.cyberarm.minibots.black.engines; + +import com.qualcomm.robotcore.eventloop.opmode.TeleOp; + +import dev.cyberarm.minibots.black.BlackMinibot; +import dev.cyberarm.minibots.black.states.BlackMinibotTeleOpState; + +import dev.cyberarm.engine.V2.CyberarmEngine; + +@TeleOp(name = "Cyberarm Black Minibot", group = "MINIBOT") +public class BlackMinibotTeleOpEngine extends CyberarmEngine { + private BlackMinibot minibot; + @Override + public void setup() { + minibot = new BlackMinibot(); + + addState(new BlackMinibotTeleOpState(minibot)); + } +} diff --git a/TeamCode/src/main/java/dev/cyberarm/minibots/black/states/BlackMinibotTeleOpState.java b/TeamCode/src/main/java/dev/cyberarm/minibots/black/states/BlackMinibotTeleOpState.java new file mode 100644 index 0000000..04a133d --- /dev/null +++ b/TeamCode/src/main/java/dev/cyberarm/minibots/black/states/BlackMinibotTeleOpState.java @@ -0,0 +1,61 @@ +package dev.cyberarm.minibots.black.states; + +import dev.cyberarm.engine.V2.CyberarmState; +import dev.cyberarm.minibots.black.BlackMinibot; + +public class BlackMinibotTeleOpState extends CyberarmState { + final private BlackMinibot minibot; + + double maxPower = 0.2; + double forward = 0; + double right = 0; + + double leftPower = 0.0; + double rightPower = 0.0; + + public BlackMinibotTeleOpState(BlackMinibot minibot) { + this.minibot = minibot; + } + + @Override + public void exec() { + forward = -engine.gamepad1.left_stick_y; + right = engine.gamepad1.right_stick_x; + + leftPower = forward * maxPower; + rightPower = forward * maxPower; + + // Simple TANK DRIVE + if (forward > -0.01 && forward < 0.01) { + if (right > 0) { + leftPower = right * maxPower; + rightPower = -right * maxPower; + } else if (right < 0) { + leftPower = -right * maxPower; + rightPower = right * maxPower; + } + } else { + if (right > 0) { + leftPower += right * maxPower; + rightPower -= right * maxPower; + } else if (right < 0) { + leftPower -= right * maxPower; + rightPower += right * maxPower; + } + } + + minibot.leftDrive.motorEx.setPower(leftPower); + minibot.RightDrive.motorEx.setPower(rightPower); + } + + @Override + public void telemetry() { + engine.telemetry.addLine("Cyberarm BLACK MINIBOT"); + engine.telemetry.addData("Forward", forward); + engine.telemetry.addData("Right", right); + engine.telemetry.addLine(); + engine.telemetry.addData("Max Power", maxPower); + engine.telemetry.addData("Left Power", leftPower); + engine.telemetry.addData("Right Power", rightPower); + } +} diff --git a/TeamCode/src/main/java/org/timecrafters/CenterStage/Common/MiniBTeleOPBot.java b/TeamCode/src/main/java/org/timecrafters/CenterStage/Common/MiniBTeleOPBot.java new file mode 100644 index 0000000..2ea5457 --- /dev/null +++ b/TeamCode/src/main/java/org/timecrafters/CenterStage/Common/MiniBTeleOPBot.java @@ -0,0 +1,57 @@ +package org.timecrafters.CenterStage.Common; + +import com.arcrobotics.ftclib.hardware.motors.MotorEx; +import com.qualcomm.hardware.rev.RevHubOrientationOnRobot; +import com.qualcomm.robotcore.hardware.DcMotor; +import com.qualcomm.robotcore.hardware.HardwareMap; +import com.qualcomm.robotcore.hardware.IMU; +import com.qualcomm.robotcore.hardware.Servo; +import com.qualcomm.robotcore.hardware.ServoImpl; + +import org.timecrafters.Library.Robot; +import org.timecrafters.TimeCraftersConfigurationTool.library.TimeCraftersConfiguration; + +import dev.cyberarm.engine.V2.CyberarmEngine; + +public class MiniBTeleOPBot extends Robot { + +public HardwareMap hardwareMap; +public MotorEx leftDrive, rightDrive; +public Servo servLowLeft, servLowRight, servTop; +public IMU imu; + +public TimeCraftersConfiguration configuration; + +public MiniBTeleOPBot() { +} + + @Override + public void setup() { + this.hardwareMap = CyberarmEngine.instance.hardwareMap; + CyberarmEngine engine = CyberarmEngine.instance; + + imu = engine.hardwareMap.get(IMU.class, "imu"); + + IMU.Parameters parameters = new IMU.Parameters( + new RevHubOrientationOnRobot( + RevHubOrientationOnRobot.LogoFacingDirection.LEFT, + RevHubOrientationOnRobot.UsbFacingDirection.UP)); + + imu.initialize(parameters); + + //Motors + leftDrive = new MotorEx(hardwareMap, "LeftDrive"); + rightDrive = new MotorEx(hardwareMap, "RightDrive"); + + leftDrive.motor.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER); + rightDrive.motor.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER); + + leftDrive.motor.setMode(DcMotor.RunMode.RUN_USING_ENCODER); + rightDrive.motor.setMode(DcMotor.RunMode.RUN_USING_ENCODER); + + //Servos + servLowLeft = hardwareMap.servo.get("ServoLowLeft"); + servLowRight = hardwareMap.servo.get("ServoLowRight"); + servTop = hardwareMap.servo.get("ServoTop"); + } +} diff --git a/TeamCode/src/main/java/org/timecrafters/CenterStage/TeleOp/Engines/MiniBTeleOPEngine.java b/TeamCode/src/main/java/org/timecrafters/CenterStage/TeleOp/Engines/MiniBTeleOPEngine.java new file mode 100644 index 0000000..804234a --- /dev/null +++ b/TeamCode/src/main/java/org/timecrafters/CenterStage/TeleOp/Engines/MiniBTeleOPEngine.java @@ -0,0 +1,22 @@ +package org.timecrafters.CenterStage.TeleOp.Engines; + +import com.qualcomm.robotcore.eventloop.opmode.TeleOp; + +import org.timecrafters.CenterStage.Common.MiniBTeleOPBot; +import org.timecrafters.CenterStage.TeleOp.States.BlackMiniTeleOP; + +import dev.cyberarm.engine.V2.CyberarmEngine; + +@TeleOp(name = "Black Minibot") + +public class MiniBTeleOPEngine extends CyberarmEngine { + private MiniBTeleOPBot robot; + + @Override + public void setup() { + this.robot = new MiniBTeleOPBot(); + this.robot.setup(); + + addState(new BlackMiniTeleOP()); + } +} diff --git a/TeamCode/src/main/java/org/timecrafters/CenterStage/TeleOp/States/BlackMiniTeleOP.java b/TeamCode/src/main/java/org/timecrafters/CenterStage/TeleOp/States/BlackMiniTeleOP.java new file mode 100644 index 0000000..083d51a --- /dev/null +++ b/TeamCode/src/main/java/org/timecrafters/CenterStage/TeleOp/States/BlackMiniTeleOP.java @@ -0,0 +1,41 @@ +package org.timecrafters.CenterStage.TeleOp.States; + +import org.timecrafters.CenterStage.Common.MiniBTeleOPBot; + +import dev.cyberarm.engine.V2.CyberarmState; + +public class BlackMiniTeleOP extends CyberarmState { + private MiniBTeleOPBot robot; + public BlackMiniTeleOP(MiniBTeleOPBot robot) {this.robot = robot;} + + + private double rPower, lPower; + + public BlackMiniTeleOP() { + } + + @Override + public void init() { + rPower = 0; + lPower = 0; + robot.rightDrive.motor.setPower(rPower); + robot.leftDrive.motor.setPower(lPower); + + } + @Override + public void exec() { + + if (engine.gamepad1.right_trigger > 0.1) { + rPower = engine.gamepad1.right_trigger; + robot.rightDrive.motor.setPower(rPower); + } + + if (engine.gamepad1.left_trigger > 0.1) { + lPower = engine.gamepad1.left_trigger; + robot.leftDrive.motor.setPower(lPower); + } + + + + } +} diff --git a/TeamCode/src/main/java/org/timecrafters/CenterStage/TeleOp/States/YellowMinibotTeleOP.java b/TeamCode/src/main/java/org/timecrafters/CenterStage/TeleOp/States/YellowMinibotTeleOP.java index 17f7883..68c697a 100644 --- a/TeamCode/src/main/java/org/timecrafters/CenterStage/TeleOp/States/YellowMinibotTeleOP.java +++ b/TeamCode/src/main/java/org/timecrafters/CenterStage/TeleOp/States/YellowMinibotTeleOP.java @@ -60,7 +60,7 @@ public class YellowMinibotTeleOP extends CyberarmState { @Override public void exec() { - if (Math.abs(engine.gamepad1.right_stick_y) < 0.1 && Math.abs(engine.gamepad1.right_stick_x) < 0.1 && Math.abs(engine.gamepad1.left_stick_x) < 0.1) { + if (Math.abs(engine.gamepad1.left_stick_y) < 0.1 && Math.abs(engine.gamepad1.left_stick_x) < 0.1 && Math.abs(engine.gamepad1.right_stick_x) < 0.1) { drivePower = 0; robot.flDrive.motor.setPower(0); robot.frDrive.motor.setPower(0); @@ -76,24 +76,24 @@ public class YellowMinibotTeleOP extends CyberarmState { robot.imu.resetYaw(); } - if (Math.abs(engine.gamepad1.right_stick_y) > 0.1 && Math.abs(engine.gamepad1.right_stick_x) < 0.1) { - drivePower = engine.gamepad1.right_stick_y; + if (Math.abs(engine.gamepad1.left_stick_y) > 0.1 && Math.abs(engine.gamepad1.left_stick_x) < 0.1) { + drivePower = engine.gamepad1.left_stick_y; robot.flDrive.motor.setPower(drivePower); robot.frDrive.motor.setPower(drivePower); robot.blDrive.motor.setPower(drivePower); robot.brDrive.motor.setPower(drivePower); } - if (Math.abs(engine.gamepad1.right_stick_x) > 0.1) { - drivePower = engine.gamepad1.right_stick_x; + if (Math.abs(engine.gamepad1.left_stick_x) > 0.1) { + drivePower = engine.gamepad1.left_stick_x; robot.flDrive.motor.setPower(-drivePower); robot.frDrive.motor.setPower(drivePower); robot.blDrive.motor.setPower(drivePower); robot.brDrive.motor.setPower(-drivePower); } - if (Math.abs(engine.gamepad1.left_stick_x) > 0.1){ - drivePower = engine.gamepad1.left_stick_x; + if (Math.abs(engine.gamepad1.right_stick_x) > 0.1){ + drivePower = engine.gamepad1.right_stick_x; robot.flDrive.motor.setPower(-drivePower); robot.frDrive.motor.setPower(drivePower); robot.blDrive.motor.setPower(-drivePower);