More tele...almost done ig lol

This commit is contained in:
2025-11-07 20:59:41 -06:00
parent 238019d2ea
commit 8f40bd50a8
4 changed files with 600 additions and 74 deletions

View File

@@ -0,0 +1,36 @@
package org.firstinspires.ftc.teamcode.autonomous;
import com.acmerobotics.dashboard.config.Config;
import com.acmerobotics.dashboard.telemetry.MultipleTelemetry;
import com.qualcomm.robotcore.eventloop.opmode.Autonomous;
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
import org.firstinspires.ftc.teamcode.libs.RR.MecanumDrive;
import org.firstinspires.ftc.teamcode.utils.Robot;
@Config
@Autonomous
public class Red extends LinearOpMode {
Robot robot;
MultipleTelemetry TELE;
MecanumDrive drive;
@Override
public void runOpMode() throws InterruptedException {
waitForStart();
if (isStopRequested()) return;
if (opModeIsActive()){
}
}
}

View File

@@ -90,6 +90,7 @@ public class Spindexer implements Subsystem{
} }
public void checkForBalls() { public void checkForBalls() {
if (p0.getState()){ if (p0.getState()){
ball0 = true; ball0 = true;
green0 = p1.getState(); green0 = p1.getState();
@@ -141,25 +142,34 @@ public class Spindexer implements Subsystem{
position = spindexer_outtakeBall1; position = spindexer_outtakeBall1;
} }
public void outtakeGreen() {
if (green0) { public int outtakeGreen(int secLast, int Last) {
outtake1(); if (green2 && (secLast!=3) && (Last!=3)) {
} else if (green1){
outtake2();
} else if (green2) {
outtake3(); outtake3();
return 3;
} else if (green1 && (secLast!=2) && (Last!=2)){
outtake2();
return 2;
} else if (green0 && (secLast!=1) && (Last!=1)) {
outtake1();
return 1;
} else {
if (secLast!=1 && Last!= 1){
outtake1();
return 1;
} else if (secLast!=2 && Last!=2){
outtake2();
return 2;
} else {
outtake3();
return 3;
}
} }
} }
public void outtakePurpleFs() {
if (!green0 && ball0) {
outtake1();
} else if (!green1 && ball1){
outtake2();
} else if (!green2 && ball2) {
outtake3();
}
}
public void outtakeGreenFs() { public void outtakeGreenFs() {
if (green0 && ball0) { if (green0 && ball0) {
@@ -171,13 +181,46 @@ public class Spindexer implements Subsystem{
} }
} }
public void outtakePurple() { public int greens() {
if (!green0) { int num = 0;
outtake1();
} else if (!green1){ if (green0){num++;}
outtake2();
} else if (!green2) { if (green1){num++;}
if (green2){num++;}
return num;
}
public int outtakePurple(int secLast, int Last) {
if (!green2 && (secLast!=3) && (Last!=3)) {
outtake3(); outtake3();
return 3;
} else if (!green1 && (secLast!=2) && (Last!=2)){
outtake2();
return 2;
} else if (!green0 && (secLast!=1) && (Last!=1)) {
outtake1();
return 1;
} else {
if (secLast!=1 && Last!= 1){
outtake1();
return 1;
} else if (secLast!=2 && Last!=2){
outtake2();
return 2;
} else {
outtake3();
return 3;
}
} }
} }
@@ -198,7 +241,7 @@ public class Spindexer implements Subsystem{
colorSensorTelemetry(); colorSensorTelemetry();
} }
checkForBalls();
} }
} }

View File

@@ -49,6 +49,10 @@ public class TeleopV1 extends LinearOpMode {
public static double pos = 0.54; public static double pos = 0.54;
public boolean all = false;
public int ticker = 0;
ToggleButtonReader g1RightBumper; ToggleButtonReader g1RightBumper;
ToggleButtonReader g2Circle; ToggleButtonReader g2Circle;
@@ -60,6 +64,8 @@ public class TeleopV1 extends LinearOpMode {
ToggleButtonReader g2RightBumper; ToggleButtonReader g2RightBumper;
ToggleButtonReader g1LeftBumper;
ToggleButtonReader g2LeftBumper; ToggleButtonReader g2LeftBumper;
ToggleButtonReader g2DpadUp; ToggleButtonReader g2DpadUp;
@@ -69,12 +75,19 @@ public class TeleopV1 extends LinearOpMode {
ToggleButtonReader g2DpadRight; ToggleButtonReader g2DpadRight;
ToggleButtonReader g2DpadLeft; ToggleButtonReader g2DpadLeft;
public boolean leftBumper = false;
public double g1RightBumperStamp = 0.0; public double g1RightBumperStamp = 0.0;
public double g1LeftBumperStamp = 0.0;
public double g2LeftBumperStamp = 0.0; public double g2LeftBumperStamp = 0.0;
public static int spindexerPos = 0; public static int spindexerPos = 0;
public boolean green = false;
Shooter shooter; Shooter shooter;
public boolean scoreAll = false; public boolean scoreAll = false;
@@ -83,10 +96,23 @@ public class TeleopV1 extends LinearOpMode {
public boolean autotrack = true; public boolean autotrack = true;
public int last = 0;
public int second = 0;
public double offset = 0.0; public double offset = 0.0;
public static double rIn = 0.59;
public static double rOut = 0;
public boolean notShooting = true; public boolean notShooting = true;
public boolean circle = false;
public boolean square = false;
public boolean tri = false;
@Override @Override
@@ -113,6 +139,10 @@ public class TeleopV1 extends LinearOpMode {
g2 = new GamepadEx(gamepad2); g2 = new GamepadEx(gamepad2);
g1LeftBumper = new ToggleButtonReader(
g1, GamepadKeys.Button.LEFT_BUMPER
);
g2Circle = new ToggleButtonReader( g2Circle = new ToggleButtonReader(
g2, GamepadKeys.Button.B g2, GamepadKeys.Button.B
); );
@@ -176,6 +206,8 @@ public class TeleopV1 extends LinearOpMode {
shooter.setShooterMode("MANUAL"); shooter.setShooterMode("MANUAL");
robot.rejecter.setPosition(rIn);
@@ -196,8 +228,30 @@ public class TeleopV1 extends LinearOpMode {
TELE.addData("heading", drive.localizer.getPose().heading.toDouble()); TELE.addData("heading", drive.localizer.getPose().heading.toDouble());
TELE.addData("off", offset);
robot.hood.setPosition(pos); robot.hood.setPosition(pos);
g1LeftBumper.readValue();
if (g1LeftBumper.wasJustPressed()){
g2LeftBumperStamp = getRuntime();
leftBumper = true;
}
if (leftBumper){
double time = getRuntime() - g2LeftBumperStamp;
if (time < 1.0){
robot.rejecter.setPosition(rOut);
} else {
robot.rejecter.setPosition(rIn);
}
}
intake(); intake();
@@ -215,6 +269,10 @@ public class TeleopV1 extends LinearOpMode {
g2DpadUp.readValue(); g2DpadUp.readValue();
if (!scoreAll){
spindexer.checkForBalls();
}
if(g2DpadUp.wasJustPressed()){ if(g2DpadUp.wasJustPressed()){
pos -=0.02; pos -=0.02;
} }
@@ -235,7 +293,7 @@ public class TeleopV1 extends LinearOpMode {
offset +=0.02; offset +=0.02;
} }
if (gamepad2.right_trigger > 0.5){ if (gamepad2.right_stick_x > 0.5){
pos = shooter.getAngleByDist( pos = shooter.getAngleByDist(
shooter.trackGoal(drive.localizer.getPose(), new Pose2d(-10, 0, 0), offset) shooter.trackGoal(drive.localizer.getPose(), new Pose2d(-10, 0, 0), offset)
); );
@@ -306,35 +364,422 @@ public class TeleopV1 extends LinearOpMode {
shooter.setManualPower(1); shooter.setManualPower(1);
TELE.addData("greenImportant", green);
TELE.addData("last", last);
TELE.addData("2ndLast", second);
int numGreen = spindexer.greens();
if (square) {
if (time < 0.3) { if (time < 0.3) {
ticker = 0;
last = 0;
second = 0;
transfer.transferOut(); transfer.transferOut();
transfer.setTransferPower(1); transfer.setTransferPower(1);
} else if (time < 1.5){ } else if (time < 2) {
spindexer.outtake3();
} else if (time < 2.0){ if (ticker == 0) {
if (numGreen == 2) {
last = spindexer.outtakePurple(second, last);
second = last;
} else {
last = spindexer.outtakeGreen(second, last);
second = last;
}
}
second = last;
ticker++;
} else if (time < 2.5) {
ticker = 0;
second = last;
transfer.transferIn(); transfer.transferIn();
} else if (time < 3){ } else if (time < 4) {
transfer.transferOut(); transfer.transferOut();
spindexer.outtake2();
} else if (time < 3.5){ if (ticker == 0) {
transfer.transferIn();
if (numGreen == 2) {
last = spindexer.outtakeGreen(second, last);
} else {
last = spindexer.outtakePurple(second, last);
}
}
ticker++;
} else if (time < 4.5) { } else if (time < 4.5) {
ticker = 0;
transfer.transferIn();
} else if (time < 6) {
transfer.transferOut(); transfer.transferOut();
spindexer.outtake1();
} else if (time < 5){ if (ticker == 0) {
if (numGreen == 2) {
last = spindexer.outtakeGreen(second, last);
} else {
last = spindexer.outtakePurple(second, last);
}
}
ticker++;
} else if (time < 6.5) {
transfer.transferIn(); transfer.transferIn();
} else { } else {
ticker = 0;
scoreAll = false; scoreAll = false;
transfer.transferOut(); transfer.transferOut();
shooter.setManualPower(0); shooter.setManualPower(0);
}
} else if (tri) {
if (time < 0.3) {
ticker = 0;
last = 0;
second = 0;
transfer.transferOut();
transfer.setTransferPower(1);
} else if (time < 2) {
if (ticker == 0) {
if (numGreen == 2) {
last = spindexer.outtakeGreen(second, last);
second = last;
} else {
last = spindexer.outtakePurple(second, last);
second = last;
}
}
second = last;
ticker++;
} else if (time < 2.5) {
ticker = 0;
second = last;
transfer.transferIn();
} else if (time < 4) {
transfer.transferOut();
if (ticker == 0) {
if (numGreen == 2) {
last = spindexer.outtakePurple(second, last);
} else {
last = spindexer.outtakeGreen(second, last);
}
}
ticker++;
} else if (time < 4.5) {
ticker = 0;
transfer.transferIn();
} else if (time < 6) {
transfer.transferOut();
if (ticker == 0) {
if (numGreen == 2) {
last = spindexer.outtakeGreen(second, last);
} else {
last = spindexer.outtakePurple(second, last);
}
}
ticker++;
} else if (time < 6.5) {
transfer.transferIn();
} else {
ticker = 0;
scoreAll = false;
transfer.transferOut();
shooter.setManualPower(0);
}
} else if (circle){
if (time < 0.3) {
ticker = 0;
last = 0;
second = 0;
transfer.transferOut();
transfer.setTransferPower(1);
} else if (time < 2) {
if (ticker == 0) {
if (numGreen == 2) {
last = spindexer.outtakeGreen(second, last);
second = last;
} else {
last = spindexer.outtakePurple(second, last);
second = last;
}
}
second = last;
ticker++;
} else if (time < 2.5) {
ticker = 0;
second = last;
transfer.transferIn();
} else if (time < 4) {
transfer.transferOut();
if (ticker == 0) {
if (numGreen == 2) {
last = spindexer.outtakeGreen(second, last);
} else {
last = spindexer.outtakePurple(second, last);
}
}
ticker++;
} else if (time < 4.5) {
ticker = 0;
transfer.transferIn();
} else if (time < 6) {
transfer.transferOut();
if (ticker == 0) {
if (numGreen == 2) {
last = spindexer.outtakePurple(second, last);
} else {
last = spindexer.outtakeGreen(second, last);
}
}
ticker++;
} else if (time < 6.5) {
transfer.transferIn();
} else {
ticker = 0;
scoreAll = false;
transfer.transferOut();
shooter.setManualPower(0);
}
} else{
if (time < 0.3) {
ticker = 0;
last = 0;
second = 0;
if (gamepad2.right_trigger > 0.5) {
green = false;
all = gamepad2.left_trigger > 0.5;
} else if (gamepad2.left_trigger > 0.5) {
green = true;
all = false;
} else {
all = true;
} }
transfer.transferOut();
transfer.setTransferPower(1);
} else if (time < 2) {
if (ticker == 0) {
if (all) {
spindexer.outtake3();
last = 3;
second = 3;
} else if (green) {
last = spindexer.outtakeGreen(second, last);
second = last;
} else {
last = spindexer.outtakePurple(second, last);
second = last;
}
}
second = last;
ticker++;
} else if (time < 2.5) {
ticker = 0;
second = last;
if (gamepad2.right_trigger > 0.5) {
green = false;
all = gamepad2.left_trigger > 0.5;
} else if (gamepad2.left_trigger > 0.5) {
green = true;
all = false;
}
transfer.transferIn();
} else if (time < 4) {
transfer.transferOut();
if (ticker == 0) {
if (all) {
spindexer.outtake2();
last = 2;
} else if (green) {
last = spindexer.outtakeGreen(second, last);
} else {
last = spindexer.outtakePurple(second, last);
}
}
ticker++;
} else if (time < 4.5) {
ticker = 0;
if (gamepad2.right_trigger > 0.5) {
green = false;
all = gamepad2.left_trigger > 0.5;
} else if (gamepad2.left_trigger > 0.5) {
green = true;
all = false;
}
transfer.transferIn();
} else if (time < 6) {
transfer.transferOut();
if (ticker == 0) {
if (all) {
spindexer.outtake1();
} else if (green) {
last = spindexer.outtakeGreen(second, last);
} else {
last = spindexer.outtakePurple(second, last);
}
}
ticker++;
} else if (time < 6.5) {
transfer.transferIn();
} else {
ticker = 0;
scoreAll = false;
transfer.transferOut();
shooter.setManualPower(0);
}
}
} }
@@ -403,41 +848,34 @@ public class TeleopV1 extends LinearOpMode {
spindexer.intakeShake(getRuntime()); spindexer.intakeShake(getRuntime());
} else } else {
{
if (g2Circle.wasJustPressed()){ if (g2Circle.wasJustPressed()){
spindexer.outtake3(); circle = true;
tri = false;
square = false;
} }
if (g2Triangle.wasJustPressed()){ if (g2Triangle.wasJustPressed()){
spindexer.outtake2(); circle = false;
tri = true;
square = false;
} }
if (g2Square.wasJustPressed()){ if (g2Square.wasJustPressed()){
spindexer.outtake1(); circle = false;
tri = false;
square = true;
} }
if (gamepad2.x){
if (g2Circle.wasJustReleased()){ circle = false;
transfer.setTransferPower(1); tri = false;
square = false;
} }
if (g2Triangle.wasJustReleased()){
transfer.setTransferPower(1);
}
if (g2Square.wasJustReleased()){
transfer.setTransferPower(1);
}

View File

@@ -1,13 +1,22 @@
package org.firstinspires.ftc.teamcode.utils; package org.firstinspires.ftc.teamcode.utils;
import com.acmerobotics.dashboard.config.Config;
import com.qualcomm.hardware.rev.RevColorSensorV3; import com.qualcomm.hardware.rev.RevColorSensorV3;
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode; import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp; import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
import com.qualcomm.robotcore.hardware.I2cDeviceSynchSimple; import com.qualcomm.robotcore.hardware.I2cDeviceSynchSimple;
@Config
@TeleOp @TeleOp
public class ConfigureColorRangefinder extends LinearOpMode { public class ConfigureColorRangefinder extends LinearOpMode {
public static double lowerBound = 80;
public static double higherBound = 120;
public static int led = 0;
@Override @Override
public void runOpMode() throws InterruptedException { public void runOpMode() throws InterruptedException {
ColorRangefinder crf = new ColorRangefinder(hardwareMap.get(RevColorSensorV3.class, "color")); ColorRangefinder crf = new ColorRangefinder(hardwareMap.get(RevColorSensorV3.class, "color"));
@@ -15,10 +24,10 @@ public class ConfigureColorRangefinder extends LinearOpMode {
/* Using this example configuration, you can detect both artifact colors based on which pin is reading true: /* Using this example configuration, you can detect both artifact colors based on which pin is reading true:
pin0 --> purple pin0 --> purple
pin1 --> green */ pin1 --> green */
crf.setPin0Digital(ColorRangefinder.DigitalMode.HSV, 0 / 360.0 * 255, 360 / 360.0 * 255); // purple crf.setPin0Digital(ColorRangefinder.DigitalMode.DISTANCE, 3, 20);
crf.setPin0DigitalMaxDistance(ColorRangefinder.DigitalMode.HSV, 40); // 10mm or closer requirement crf.setPin1Digital(ColorRangefinder.DigitalMode.HSV, lowerBound, higherBound); // green
crf.setPin1Digital(ColorRangefinder.DigitalMode.HSV, 110 / 360.0 * 255, 140 / 360.0 * 255); // green crf.setPin1DigitalMaxDistance(ColorRangefinder.DigitalMode.HSV, 25); //25 mm or closer
crf.setLedBrightness(2); crf.setLedBrightness(led);
} }
} }