Make everything use our Subsystem class, improve LED controller

This commit is contained in:
Michael Mikovsky
2025-02-28 14:21:32 -07:00
parent dc8a80fc46
commit 870dfa2e67
9 changed files with 90 additions and 19 deletions
@@ -9,29 +9,67 @@ package frc4388.robot.subsystems;
import edu.wpi.first.wpilibj.AddressableLED;
import edu.wpi.first.wpilibj.AddressableLEDBuffer;
import edu.wpi.first.wpilibj.DriverStation;
import edu.wpi.first.wpilibj.motorcontrol.Spark;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
import edu.wpi.first.wpilibj2.command.SubsystemBase;
import frc4388.robot.Constants.LEDConstants;
import frc4388.utility.LEDPatterns;
import frc4388.utility.Status;
import frc4388.utility.Subsystem;
import frc4388.utility.Status.ReportLevel;
/**
* Allows for the control of a 5v LED Strip using a Rev Robotics Blinkin LED
* Driver
*/
public class LED extends SubsystemBase {
public class LED extends Subsystem {
private static Spark LEDController = new Spark(LEDConstants.LED_SPARK_ID);
private double mode = LEDConstants.DEFAULT_PATTERN.getValue();
private LEDPatterns mode = LEDConstants.DEFAULT_PATTERN;
public void setMode(LEDPatterns pattern){
this.mode = pattern.getValue();
this.mode = pattern;
}
@Override
public void periodic() {
LEDController.set(mode);
update();
}
public void update() {
if(!LEDController.isAlive() || LEDController.isSafetyEnabled()) return;
if(DriverStation.isDisabled()){
LEDController.set(LEDConstants.DEFAULT_PATTERN.getValue());
}else
LEDController.set(mode.getValue());
}
@Override
public String getSubsystemName() {
return "LEDs";
}
@Override
public void queryStatus() {
SmartDashboard.putString("LED status", mode.name());
}
@Override
public Status diagnosticStatus() {
Status status = new Status();
if(LEDController.isAlive())
status.addReport(ReportLevel.INFO, "LED is CONNECTED");
else
status.addReport(ReportLevel.ERROR, "LED is DISCONNECTED");
status.addReport(ReportLevel.INFO, "LED Mode: " + mode.name());
return status;
}
}