From 1240f0cb0e68e0d1d7872bfd2382ce4b11ae8207 Mon Sep 17 00:00:00 2001 From: P-McG9 <165443752+P-McG9@users.noreply.github.com> Date: Sat, 30 Mar 2024 22:34:27 +0000 Subject: [PATCH 1/5] Made lights turn cyan when shooter starts spinup and the lime green when it's at speed. --- src/main/java/com/team766/robot/reva/DriverOI.java | 12 +++++++++++- .../com/team766/robot/reva/mechanisms/Lights.java | 12 ++++++++++++ .../com/team766/robot/reva/mechanisms/Shooter.java | 6 +++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/team766/robot/reva/DriverOI.java b/src/main/java/com/team766/robot/reva/DriverOI.java index d513e81d1..8f2799706 100644 --- a/src/main/java/com/team766/robot/reva/DriverOI.java +++ b/src/main/java/com/team766/robot/reva/DriverOI.java @@ -30,6 +30,7 @@ public class DriverOI extends OIFragment { protected boolean isCross = false; private final OICondition movingJoysticks; + private final OICondition isAtGoodSpeed; private LaunchedContext visionContext; @@ -57,6 +58,11 @@ public DriverOI( + Math.abs(leftJoystickY) + Math.abs(rightJoystickY) > 0); + new OICondition( + () -> + Robot.shooter.isCloseToExpectedSpeed() + && Robot.shooter.isNotZero() + ); } public void handleOI(Context context) { @@ -95,14 +101,18 @@ public void handleOI(Context context) { visionSpeakerHelper.update(); if (leftJoystick.getButtonPressed(InputConstants.BUTTON_TARGET_SHOOTER)) { - + Robot.lights.signalStartSpinup(); visionContext = context.startAsync(new DriverShootNow()); + if(isAtGoodSpeed.isNewlyTriggering()) { + Robot.lights.signalAtSpeed(); + } } else if (leftJoystick.getButtonReleased(InputConstants.BUTTON_TARGET_SHOOTER)) { visionContext.stop(); context.takeOwnership(drive); context.takeOwnership(intake); + Robot.lights.signalShotComplete(); Robot.intake.stop(); drive.stopDrive(); diff --git a/src/main/java/com/team766/robot/reva/mechanisms/Lights.java b/src/main/java/com/team766/robot/reva/mechanisms/Lights.java index 2f348a726..6f3d4e833 100644 --- a/src/main/java/com/team766/robot/reva/mechanisms/Lights.java +++ b/src/main/java/com/team766/robot/reva/mechanisms/Lights.java @@ -93,4 +93,16 @@ private boolean handleErrorCode(ErrorCode e) { return false; } + public boolean signalStartSpinup(){ + ErrorCode e = m_candle.setLEDs(2, 245, 229); + return handleErrorCode(e); + } + public boolean signalAtSpeed(){ + ErrorCode e = m_candle.setLEDs(172, 245, 2); + return handleErrorCode(e); + } + public boolean signalShotComplete(){ + ErrorCode e = m_candle.setLEDs(0,0,0); + return handleErrorCode(e); + } } diff --git a/src/main/java/com/team766/robot/reva/mechanisms/Shooter.java b/src/main/java/com/team766/robot/reva/mechanisms/Shooter.java index 9b91e3f9c..a22c7e3ea 100644 --- a/src/main/java/com/team766/robot/reva/mechanisms/Shooter.java +++ b/src/main/java/com/team766/robot/reva/mechanisms/Shooter.java @@ -49,6 +49,11 @@ public boolean isCloseToExpectedSpeed() { && (Math.abs(targetSpeed - getShooterSpeedBottom()) < SPEED_TOLERANCE)); } +public boolean isNotZero() { + return (!(((getShooterSpeedTop()) == 0) + || (getShooterSpeedBottom() == 0))); + } + private double getShooterSpeedTop() { return shooterMotorTop.getSensorVelocity(); } @@ -94,7 +99,6 @@ public void run() { } // SmartDashboard.putBoolean("Shooter At Speed", isCloseToExpectedSpeed()); - // FIXME: problem with this - does not pay attention to changes in PID values // https://github.com/Team766/2024/pull/49 adds support to address this // until then, this is equivalent to the earlier approach From d5168693acbe800f177a5a1674f16b62e41940ba Mon Sep 17 00:00:00 2001 From: P-McG9 <165443752+P-McG9@users.noreply.github.com> Date: Sun, 31 Mar 2024 23:05:21 +0000 Subject: [PATCH 2/5] spotlessed --- src/main/java/com/team766/robot/reva/DriverOI.java | 6 +----- .../com/team766/robot/reva/mechanisms/Lights.java | 11 +++++++---- .../com/team766/robot/reva/mechanisms/Shooter.java | 5 ++--- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/team766/robot/reva/DriverOI.java b/src/main/java/com/team766/robot/reva/DriverOI.java index 8f2799706..8b82d59fc 100644 --- a/src/main/java/com/team766/robot/reva/DriverOI.java +++ b/src/main/java/com/team766/robot/reva/DriverOI.java @@ -58,11 +58,7 @@ public DriverOI( + Math.abs(leftJoystickY) + Math.abs(rightJoystickY) > 0); - new OICondition( - () -> - Robot.shooter.isCloseToExpectedSpeed() - && Robot.shooter.isNotZero() - ); + new OICondition(() -> Robot.shooter.isCloseToExpectedSpeed() && Robot.shooter.isNotZero()); } public void handleOI(Context context) { diff --git a/src/main/java/com/team766/robot/reva/mechanisms/Lights.java b/src/main/java/com/team766/robot/reva/mechanisms/Lights.java index 6f3d4e833..ce087bf50 100644 --- a/src/main/java/com/team766/robot/reva/mechanisms/Lights.java +++ b/src/main/java/com/team766/robot/reva/mechanisms/Lights.java @@ -93,16 +93,19 @@ private boolean handleErrorCode(ErrorCode e) { return false; } - public boolean signalStartSpinup(){ + + public boolean signalStartSpinup() { ErrorCode e = m_candle.setLEDs(2, 245, 229); return handleErrorCode(e); } - public boolean signalAtSpeed(){ + + public boolean signalAtSpeed() { ErrorCode e = m_candle.setLEDs(172, 245, 2); return handleErrorCode(e); } - public boolean signalShotComplete(){ - ErrorCode e = m_candle.setLEDs(0,0,0); + + public boolean signalShotComplete() { + ErrorCode e = m_candle.setLEDs(0, 0, 0); return handleErrorCode(e); } } diff --git a/src/main/java/com/team766/robot/reva/mechanisms/Shooter.java b/src/main/java/com/team766/robot/reva/mechanisms/Shooter.java index a22c7e3ea..c4d79f133 100644 --- a/src/main/java/com/team766/robot/reva/mechanisms/Shooter.java +++ b/src/main/java/com/team766/robot/reva/mechanisms/Shooter.java @@ -49,9 +49,8 @@ public boolean isCloseToExpectedSpeed() { && (Math.abs(targetSpeed - getShooterSpeedBottom()) < SPEED_TOLERANCE)); } -public boolean isNotZero() { - return (!(((getShooterSpeedTop()) == 0) - || (getShooterSpeedBottom() == 0))); + public boolean isNotZero() { + return (!(((getShooterSpeedTop()) == 0) || (getShooterSpeedBottom() == 0))); } private double getShooterSpeedTop() { From c513c0e1f0bea49c3a98d74fe46103ff84e6dc53 Mon Sep 17 00:00:00 2001 From: qntmcube <100043837+qntmcube@users.noreply.github.com> Date: Sun, 31 Mar 2024 16:26:07 -0700 Subject: [PATCH 3/5] fix slight syntax error --- src/main/java/com/team766/robot/reva/DriverOI.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/team766/robot/reva/DriverOI.java b/src/main/java/com/team766/robot/reva/DriverOI.java index 8b82d59fc..adf39755d 100644 --- a/src/main/java/com/team766/robot/reva/DriverOI.java +++ b/src/main/java/com/team766/robot/reva/DriverOI.java @@ -58,7 +58,9 @@ public DriverOI( + Math.abs(leftJoystickY) + Math.abs(rightJoystickY) > 0); - new OICondition(() -> Robot.shooter.isCloseToExpectedSpeed() && Robot.shooter.isNotZero()); + isAtGoodSpeed = + new OICondition( + () -> Robot.shooter.isCloseToExpectedSpeed() && Robot.shooter.isNotZero()); } public void handleOI(Context context) { From 710aa194842fd11d23db628f770406207153c567 Mon Sep 17 00:00:00 2001 From: P-McG9 <165443752+P-McG9@users.noreply.github.com> Date: Mon, 1 Apr 2024 08:42:23 -0700 Subject: [PATCH 4/5] Update Shooter.java Made the isNotZero method use the speed tolerance instead of actually using zero --- src/main/java/com/team766/robot/reva/mechanisms/Shooter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/team766/robot/reva/mechanisms/Shooter.java b/src/main/java/com/team766/robot/reva/mechanisms/Shooter.java index c4d79f133..985cf44b0 100644 --- a/src/main/java/com/team766/robot/reva/mechanisms/Shooter.java +++ b/src/main/java/com/team766/robot/reva/mechanisms/Shooter.java @@ -50,7 +50,7 @@ public boolean isCloseToExpectedSpeed() { } public boolean isNotZero() { - return (!(((getShooterSpeedTop()) == 0) || (getShooterSpeedBottom() == 0))); + return ((getShooterSpeedTop() <= SPEED_TOLERANCE) || (getShooterSpeedBottom() <= SPEED_TOLERANCE)); } private double getShooterSpeedTop() { From 4da312247f7d0a15f6e2d6f2be899ab971593a48 Mon Sep 17 00:00:00 2001 From: P-McG9 <165443752+P-McG9@users.noreply.github.com> Date: Mon, 1 Apr 2024 08:55:34 -0700 Subject: [PATCH 5/5] Update DriverOI.java Moved the if-statement for activating the signalAtSpeed method out of the button pressed if-statement --- src/main/java/com/team766/robot/reva/DriverOI.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/team766/robot/reva/DriverOI.java b/src/main/java/com/team766/robot/reva/DriverOI.java index adf39755d..f80aa175f 100644 --- a/src/main/java/com/team766/robot/reva/DriverOI.java +++ b/src/main/java/com/team766/robot/reva/DriverOI.java @@ -99,11 +99,7 @@ public void handleOI(Context context) { visionSpeakerHelper.update(); if (leftJoystick.getButtonPressed(InputConstants.BUTTON_TARGET_SHOOTER)) { - Robot.lights.signalStartSpinup(); visionContext = context.startAsync(new DriverShootNow()); - if(isAtGoodSpeed.isNewlyTriggering()) { - Robot.lights.signalAtSpeed(); - } } else if (leftJoystick.getButtonReleased(InputConstants.BUTTON_TARGET_SHOOTER)) { visionContext.stop(); @@ -117,6 +113,9 @@ public void handleOI(Context context) { context.releaseOwnership(drive); context.releaseOwnership(intake); } + else if(isAtGoodSpeed.isNewlyTriggering()) { + Robot.lights.signalAtSpeed(); + } // Moves the robot if there are joystick inputs if (movingJoysticks.isTriggering()) {