Skip to content

Commit e8132ea

Browse files
committed
made Leds work on normal mode
1 parent a78dcc7 commit e8132ea

File tree

3 files changed

+181
-27
lines changed

3 files changed

+181
-27
lines changed

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

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,36 @@
33
import edu.wpi.first.wpilibj.util.Color;
44

55
public class LEDConstants {
6-
public static final int stripLength = 42;
6+
public static final int kStripLength = 42;
7+
8+
public static final int kAlgeaEnd = kStripLength / 3;
9+
public static final int kLevelStart = kStripLength / 3;
10+
public static final int kPlaceStart = kStripLength / 9 * 7;
11+
public static final int kGetAlgeaStart = kStripLength / 9 * 8;
712

813
public static final Color kAlmostBlack = new Color(0, 0, 1);
9-
// LED Colors
14+
// Normal LED Colors
1015
public static final Color kHasAlgea = Color.kAquamarine;
1116
public static final Color kNotHasAlgea = kAlmostBlack;
17+
1218
public static final Color kCoralNotInRobot = Color.kOrange;
1319
public static final Color kCoralInFunnel = Color.kHotPink;
1420
public static final Color kCoralInRobot = Color.kWhite;
15-
public static final Color kCurrentLimiting = Color.kRed;
16-
public static final Color kAutoPlacing = Color.kPurple;
17-
public static final Color kManual = kAlmostBlack;
18-
public static final Color kRight = Color.kSaddleBrown;
19-
public static final Color kLeft = Color.kGreenYellow;
21+
2022
public static final Color kL1 = Color.kBlue;
2123
public static final Color kL2 = Color.kGreen;
2224
public static final Color kL3 = Color.kYellow;
2325
public static final Color kL4 = Color.kRed;
24-
public static final Color kGettingAlgea = Color.kAquamarine;
25-
public static final Color kNotGettingAlgea = kAlmostBlack;
26+
27+
public static final Color kManual = kAlmostBlack;
28+
public static final Color kRight = Color.kSaddleBrown;
29+
public static final Color kLeft = Color.kGreenYellow;
30+
31+
public static final Color kGetAlgea = Color.kAquamarine;
32+
public static final Color kNotGetAlgea = kAlmostBlack;
33+
34+
public static final Color kCurrentLimiting = Color.kRed;
35+
36+
public static final Color kAutoPlacing = Color.kPurple;
37+
// Climb LED Colors
2638
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
import edu.wpi.first.wpilibj.util.Color;
77

88
public class LEDIO {
9-
public AddressableLED ledBase;
10-
public AddressableLEDBuffer led;
9+
private AddressableLED ledBase;
10+
private AddressableLEDBuffer led;
1111

1212
public LEDIO(int port, int length) {
1313
ledBase = new AddressableLED(port);

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

Lines changed: 158 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,130 @@
1313
public class LEDSubsystem extends MeasurableSubsystem {
1414
private LEDIO io;
1515
private LEDPattern base = LEDPattern.solid(Color.kBlack);
16-
private LEDPattern coral = LEDPattern.solid(LEDConstants.kCoralInRobot);
16+
public LEDStates currState = LEDStates.OFF;
17+
18+
// section patterns
1719
private LEDPattern algea =
1820
LEDPattern.steps(
19-
Map.of(0, LEDConstants.kHasAlgea, LEDConstants.stripLength / 3, Color.kBlack));
20-
21-
private LEDPattern currentLimiting =
22-
LEDPattern.solid(LEDConstants.kCurrentLimiting).blink(Seconds.of(1), Seconds.of(2));
21+
Map.of(0, LEDConstants.kHasAlgea, LEDConstants.kStripLength / 3, Color.kBlack));
22+
private LEDPattern coral = LEDPattern.solid(LEDConstants.kCoralInRobot);
23+
private LEDPattern level = LEDPattern.steps(Map.of(LEDConstants.kLevelStart, LEDConstants.kL1));
24+
private LEDPattern place =
25+
LEDPattern.steps(Map.of(LEDConstants.kPlaceStart, LEDConstants.kManual));
26+
private LEDPattern getAlgea =
27+
LEDPattern.steps(Map.of(LEDConstants.kGetAlgeaStart, LEDConstants.kNotGetAlgea));
2328
private LEDPattern autoplace =
24-
LEDPattern.steps(Map.of(LEDConstants.stripLength / 3 * 2, LEDConstants.kAutoPlacing))
29+
LEDPattern.steps(Map.of(LEDConstants.kStripLength / 3 * 2, LEDConstants.kAutoPlacing))
2530
.blink(Seconds.of(0.25));
26-
public LEDStates currState = LEDStates.OFF;
27-
public CoralStates coralState = CoralStates.NO_PIECE;
28-
public boolean autoPlacing = false;
29-
public boolean hasAlgae = false;
30-
public boolean isLimiting = false;
31+
private LEDPattern currentLimiting =
32+
LEDPattern.solid(LEDConstants.kCurrentLimiting).blink(Seconds.of(1), Seconds.of(2));
33+
34+
// section booleans and states
35+
private boolean hasAlgae = false;
36+
private CoralStates coralState = CoralStates.NO_PIECE;
37+
private LevelStates levelState = LevelStates.L1;
38+
private PlaceStates placeState = PlaceStates.MANUAL;
39+
private boolean shouldGetAlgea = false;
40+
private boolean autoPlacing = false;
41+
private boolean isLimiting = false;
3142

3243
public LEDSubsystem(LEDIO io) {
3344
this.io = io;
3445
}
3546

47+
public void setState(LEDStates state) {
48+
currState = state;
49+
switch (currState) {
50+
case OFF:
51+
io.setOff();
52+
break;
53+
case NORMAL:
54+
buildBase();
55+
break;
56+
case CLIMB:
57+
break;
58+
default:
59+
break;
60+
}
61+
}
62+
63+
public LEDStates getState() {
64+
return currState;
65+
}
66+
67+
// setters
68+
public void setAlgeaLights(boolean on) {
69+
hasAlgae = on;
70+
buildBase();
71+
}
72+
73+
public void setCoralLights(CoralStates state) {
74+
coralState = state;
75+
buildBase();
76+
}
77+
78+
public void setLevelLights(LevelStates state) {
79+
levelState = state;
80+
buildBase();
81+
}
82+
83+
public void setPlaceLights(PlaceStates state) {
84+
placeState = state;
85+
buildBase();
86+
}
87+
88+
public void setGetAlgeaLights(boolean on) {
89+
shouldGetAlgea = on;
90+
buildBase();
91+
}
92+
93+
public void setAutoPlacing(boolean isAutoPlacing) {
94+
autoPlacing = isAutoPlacing;
95+
buildBase();
96+
}
97+
98+
public void setCurrentLimiting(boolean isCurrentLimiting) {
99+
this.isLimiting = isCurrentLimiting;
100+
buildBase();
101+
}
102+
103+
// getters
104+
public boolean getAlgeaLights() {
105+
return hasAlgae;
106+
}
107+
108+
public CoralStates getCoralLights() {
109+
return coralState;
110+
}
111+
112+
public LevelStates getLevelLights() {
113+
return levelState;
114+
}
115+
116+
public PlaceStates getPlaceLights() {
117+
return placeState;
118+
}
119+
120+
public boolean getGetAlgeaLights() {
121+
return shouldGetAlgea;
122+
}
123+
124+
public boolean getAutoPlacing() {
125+
return autoPlacing;
126+
}
127+
128+
public boolean getCurrentLimiting() {
129+
return isLimiting;
130+
}
131+
36132
private void buildBase() {
133+
algea =
134+
LEDPattern.steps(
135+
Map.of(
136+
0,
137+
hasAlgae ? LEDConstants.kHasAlgea : LEDConstants.kNotHasAlgea,
138+
LEDConstants.kStripLength / 3,
139+
Color.kBlack));
37140
switch (coralState) {
38141
case IN_FUNNEL:
39142
coral = LEDPattern.solid(LEDConstants.kCoralInFunnel);
@@ -45,21 +148,47 @@ private void buildBase() {
45148
coral = LEDPattern.solid(LEDConstants.kCoralNotInRobot);
46149
break;
47150
}
48-
algea =
151+
switch (levelState) {
152+
case L1:
153+
level = LEDPattern.steps(Map.of(LEDConstants.kLevelStart, LEDConstants.kL1));
154+
break;
155+
case L2:
156+
level = LEDPattern.steps(Map.of(LEDConstants.kLevelStart, LEDConstants.kL2));
157+
break;
158+
case L3:
159+
level = LEDPattern.steps(Map.of(LEDConstants.kLevelStart, LEDConstants.kL3));
160+
break;
161+
case L4:
162+
level = LEDPattern.steps(Map.of(LEDConstants.kLevelStart, LEDConstants.kL4));
163+
break;
164+
}
165+
switch (placeState) {
166+
case MANUAL:
167+
place = LEDPattern.steps(Map.of(LEDConstants.kPlaceStart, LEDConstants.kManual));
168+
case LEFT:
169+
place = LEDPattern.steps(Map.of(LEDConstants.kPlaceStart, LEDConstants.kLeft));
170+
case RIGHT:
171+
place = LEDPattern.steps(Map.of(LEDConstants.kPlaceStart, LEDConstants.kRight));
172+
}
173+
getAlgea =
49174
LEDPattern.steps(
50-
Map.of(0, LEDConstants.kHasAlgea, LEDConstants.stripLength / 3, Color.kBlack));
175+
Map.of(
176+
LEDConstants.kGetAlgeaStart,
177+
shouldGetAlgea ? LEDConstants.kGetAlgea : LEDConstants.kNotGetAlgea));
178+
base = getAlgea.overlayOn(place.overlayOn(level.overlayOn(algea.overlayOn(coral))));
51179
}
52180

53181
public void periodic() {
54182
switch (currState) {
55183
case OFF:
56184
break;
57185
case NORMAL:
186+
LEDPattern output = base;
58187
if (autoPlacing) {
59-
base = autoplace.overlayOn(base);
188+
output = autoplace.overlayOn(output);
60189
}
61190
if (isLimiting) {
62-
base = currentLimiting.overlayOn(base);
191+
output = currentLimiting.overlayOn(output);
63192
}
64193
io.setStrip(base);
65194
break;
@@ -89,6 +218,19 @@ public enum LEDStates {
89218
public enum CoralStates {
90219
IN_FUNNEL,
91220
IN_ROBOT,
92-
NO_PIECE,
221+
NO_PIECE
222+
}
223+
224+
public enum LevelStates {
225+
L1,
226+
L2,
227+
L3,
228+
L4
229+
}
230+
231+
public enum PlaceStates {
232+
MANUAL,
233+
LEFT,
234+
RIGHT
93235
}
94236
}

0 commit comments

Comments
 (0)