Skip to content

Commit 98a9de0

Browse files
committed
add LED subsystem calls to robotState
1 parent f562771 commit 98a9de0

File tree

5 files changed

+36
-23
lines changed

5 files changed

+36
-23
lines changed

src/main/java/frc/robot/RobotContainer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ public RobotContainer() {
135135
funnelSubsystem = new FunnelSubsystem(funnelIO);
136136

137137
ledIO = new LEDIO();
138-
ledSubsystem = new LEDSubsystem();
138+
ledSubsystem = new LEDSubsystem(ledIO);
139139

140140
visionSubsystem = new VisionSubsystem(driveSubsystem);
141141

src/main/java/frc/robot/constants/LEDConstants.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
import edu.wpi.first.wpilibj.util.Color;
44

55
public class LEDConstants {
6+
public static final int kLEDPort = 0;
67
// Auto/Operator = 27
78
// other = 21.5
8-
public static final int kTotalStripLength = 70;
9-
public static final int kBottomStripLength = 43;
10-
public static final int kTopStripLength = 27;
9+
public static final int kTotalStripLength = 51;
10+
public static final int kBottomStripLength = 34;
11+
public static final int kTopStripLength = 17;
1112
public static final int kTopFirstIndex = kBottomStripLength + 1;
1213

1314
public static final int kAlgeaEnd = kBottomStripLength / 3 + 1;

src/main/java/frc/robot/subsystems/led/LEDIO.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ public class LEDIO {
1212
private AddressableLEDBuffer led;
1313
private AddressableLEDBufferView ledTop;
1414

15-
public LEDIO(int port, int length) {
16-
ledBase = new AddressableLED(port);
17-
ledBase.setLength(length);
15+
public LEDIO() {
16+
ledBase = new AddressableLED(LEDConstants.kLEDPort);
17+
ledBase.setLength(LEDConstants.kTotalStripLength);
1818
ledBase.start();
19-
led = new AddressableLEDBuffer(length);
19+
led = new AddressableLEDBuffer(LEDConstants.kTotalStripLength);
2020
ledTop = led.createView(LEDConstants.kTopFirstIndex, LEDConstants.kTotalStripLength + 1);
2121
ledBase.setData(led);
2222
}

src/main/java/frc/robot/subsystems/led/LEDSubsystem.java

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
package frc.robot.subsystems.led;
22

3-
import static edu.wpi.first.units.Units.Percent;
43
import static edu.wpi.first.units.Units.Seconds;
54

65
import edu.wpi.first.wpilibj.LEDPattern;
7-
import edu.wpi.first.wpilibj.LEDPattern.GradientType;
86
import edu.wpi.first.wpilibj.util.Color;
97
import frc.robot.constants.LEDConstants;
108
import frc.robot.subsystems.robotState.RobotStateSubsystem.CoralLoc;
119
import frc.robot.subsystems.robotState.RobotStateSubsystem.ScoringLevel;
12-
1310
import java.util.Map;
1411
import java.util.Set;
1512
import org.strykeforce.telemetry.measurable.MeasurableSubsystem;
@@ -22,8 +19,7 @@ public class LEDSubsystem extends MeasurableSubsystem {
2219

2320
// section patterns
2421
private LEDPattern algea =
25-
LEDPattern.steps(
26-
Map.of(0, LEDConstants.kHasAlgea, LEDConstants.kAlgeaEnd, Color.kBlack));
22+
LEDPattern.steps(Map.of(0, LEDConstants.kHasAlgea, LEDConstants.kAlgeaEnd, Color.kBlack));
2723
private LEDPattern coral = LEDPattern.solid(LEDConstants.kCoralInRobot);
2824
private LEDPattern level = LEDPattern.steps(Map.of(LEDConstants.kLevelStart, LEDConstants.kL1));
2925
private LEDPattern place =
@@ -196,15 +192,13 @@ private void buildBase() {
196192
base = getAlgea.overlayOn(place.overlayOn(level.overlayOn(algea.overlayOn(coral))));
197193
}
198194

199-
//game stuff
195+
// game stuff
200196
private void advanceUnits() {
201-
for (int i = 0; i <= LEDConstants.kTopStripLength+1; i++) {
197+
for (int i = 0; i <= LEDConstants.kTopStripLength + 1; i++) {
202198
BottomUnits[i + 1] = BottomUnits[i];
203199
TopUnits[i] = TopUnits[i + 1];
204-
if (i == 0)
205-
BottomUnits[i] = 0;
206-
if (i == LEDConstants.kTopStripLength)
207-
TopUnits[i] = 0;
200+
if (i == 0) BottomUnits[i] = 0;
201+
if (i == LEDConstants.kTopStripLength) TopUnits[i] = 0;
208202
if (TopUnits[i] != 0 && BottomUnits[i] != 0) {
209203
if (BottomUnits[i] == TopUnits[i]) {
210204
BottomUnits[i] = 0;
@@ -219,7 +213,8 @@ private void advanceUnits() {
219213
if (BottomUnits[i] == TopUnits[i + 1]) {
220214
BottomUnits[i] = 0;
221215
TopUnits[i + 1] = 0;
222-
} else if (BottomUnits[i] > TopUnits[i + 1] || (BottomUnits[i] == 1 && TopUnits[i + 1] == 3)) {
216+
} else if (BottomUnits[i] > TopUnits[i + 1]
217+
|| (BottomUnits[i] == 1 && TopUnits[i + 1] == 3)) {
223218
TopUnits[i + 1] = 0;
224219
} else {
225220
BottomUnits[i + 1] = 0;
@@ -229,9 +224,9 @@ private void advanceUnits() {
229224
}
230225

231226
private void displayUnits() {
232-
for (int i = 0; i <= LEDConstants.kTopStripLength+1; i++) {
227+
for (int i = 0; i <= LEDConstants.kTopStripLength + 1; i++) {
233228
io.setLEDTop(i, LEDConstants.kGameColors[BottomUnits[i]]);
234-
if (TopUnits[i] != 0){
229+
if (TopUnits[i] != 0) {
235230
io.setLEDTop(i, LEDConstants.kGameColors[TopUnits[i] + 3]);
236231
}
237232
}
@@ -240,7 +235,7 @@ private void displayUnits() {
240235
public void addGameUnit(boolean isBottom, int unitNum) {
241236
// the unitNum starts at 1 and ends at 3. if you use anything else, it will be ignored
242237
if (unitNum >= 1 && unitNum <= 3) {
243-
if (isBottom){
238+
if (isBottom) {
244239
BottomUnits[0] = unitNum;
245240
} else {
246241
TopUnits[LEDConstants.kTopStripLength - 1] = unitNum;

src/main/java/frc/robot/subsystems/robotState/RobotStateSubsystem.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import frc.robot.subsystems.elevator.ElevatorSubsystem;
1818
import frc.robot.subsystems.funnel.FunnelSubsystem;
1919
import frc.robot.subsystems.led.LEDSubsystem;
20+
import frc.robot.subsystems.led.LEDSubsystem.PlaceStates;
2021
import frc.robot.subsystems.tagAlign.TagAlignSubsystem;
2122
import frc.robot.subsystems.vision.VisionSubsystem;
2223
import java.util.Set;
@@ -163,10 +164,14 @@ public void setAllianceColor(Alliance alliance) {
163164

164165
public void setScoringLevel(ScoringLevel scoringLevel) {
165166
this.scoringLevel = scoringLevel;
167+
ledSubsystem.setLevelLights(scoringLevel);
166168
}
167169

168170
public void setScoreSide(ScoreSide scoreSide) {
169171
this.scoreSide = scoreSide;
172+
if (!isAutoPlacing) ledSubsystem.setPlaceLights(PlaceStates.MANUAL);
173+
else if (scoreSide == ScoreSide.LEFT) ledSubsystem.setPlaceLights(PlaceStates.LEFT);
174+
else ledSubsystem.setPlaceLights(PlaceStates.RIGHT);
170175
}
171176

172177
public void setAlgaeHeight(AlgaeHeight algaeHeight) {
@@ -179,18 +184,24 @@ public void toggleAlgaeHeight() {
179184

180185
public void setIsAutoPlacing(boolean isAutoPlacing) {
181186
this.isAutoPlacing = isAutoPlacing;
187+
if (!isAutoPlacing) ledSubsystem.setPlaceLights(PlaceStates.MANUAL);
188+
else if (scoreSide == ScoreSide.LEFT) ledSubsystem.setPlaceLights(PlaceStates.LEFT);
189+
else ledSubsystem.setPlaceLights(PlaceStates.RIGHT);
182190
}
183191

184192
public void setGetAlgaeOnCycle(boolean getAlgaeOnCycle) {
185193
this.getAlgaeOnCycle = getAlgaeOnCycle;
194+
ledSubsystem.setGetAlgeaLights(getAlgaeOnCycle);
186195
}
187196

188197
public void toggleGetAlgaeOnCycle() {
189198
getAlgaeOnCycle = !getAlgaeOnCycle;
199+
ledSubsystem.setGetAlgeaLights(getAlgaeOnCycle);
190200
}
191201

192202
public void setCurrentLimiting(boolean isCurrentLimiting) {
193203
this.isCurrentLimiting = isCurrentLimiting;
204+
ledSubsystem.setCurrentLimiting(isCurrentLimiting);
194205
}
195206

196207
public void setIsAuto(boolean isAuto) {
@@ -298,6 +309,7 @@ public void toReefAlign() {
298309
private void toReefAlign(boolean getAlgae, boolean drive) {
299310
if (drive) {
300311
tagAlignSubsystem.start(allianceColor, scoreSide == ScoreSide.LEFT);
312+
setAutoPlacingLed(true);
301313
setState(RobotStates.REEF_ALIGN);
302314
}
303315
if ((getAlgae || !coralSubsystem.hasCoral())
@@ -473,6 +485,7 @@ private void toProcessor() {
473485
public void toInterrupted() {
474486
if (tagAlignSubsystem.getState() != TagAlignSubsystem.TagAlignStates.DONE) {
475487
tagAlignSubsystem.terminate();
488+
setAutoPlacingLed(false);
476489
driveSubsystem.setIgnoreSticks(false);
477490
}
478491

@@ -609,6 +622,7 @@ public void periodic() {
609622
if (coralSubsystem.hasCoral()) {
610623
toReefAlign(false, false);
611624
} else {
625+
setAutoPlacingLed(false);
612626
toStowSequential();
613627
}
614628
}
@@ -618,6 +632,7 @@ public void periodic() {
618632
if (!coralSubsystem.hasCoral()
619633
&& scoringTimer.hasElapsed(RobotStateConstants.kCoralEjectTimer)) {
620634
coralLoc = CoralLoc.NONE;
635+
setAutoPlacingLed(false);
621636
toFunnelLoad();
622637
} else {
623638
coralLoc = CoralLoc.SCORING;
@@ -708,6 +723,8 @@ public void periodic() {
708723
case IDLE -> {}
709724
default -> logger.error("Unhandled state: {}", curState);
710725
}
726+
ledSubsystem.setCoralLights(coralLoc);
727+
ledSubsystem.setAlgeaLights(hasAlgae());
711728
}
712729

713730
@Override

0 commit comments

Comments
 (0)