Files
Rebuilt-2026/src/main/java/frc/robot/subsystems/LEDSubsystem.java
Antoine PerreaultE 5b6e3ac7b2 led
2026-04-01 18:38:30 -04:00

142 lines
4.1 KiB
Java

/* Generated by Phoenix Tuner X */
package frc.robot.subsystems;
import edu.wpi.first.networktables.GenericEntry;
import edu.wpi.first.wpilibj.DriverStation;
import edu.wpi.first.wpilibj.Timer;
import edu.wpi.first.wpilibj.shuffleboard.BuiltInWidgets;
import edu.wpi.first.wpilibj.shuffleboard.Shuffleboard;
import edu.wpi.first.wpilibj.shuffleboard.ShuffleboardTab;
import edu.wpi.first.wpilibj2.command.Command;
import edu.wpi.first.wpilibj2.command.SubsystemBase;
import com.ctre.phoenix6.CANBus;
import com.ctre.phoenix6.controls.SolidColor;
import com.ctre.phoenix6.hardware.CANdle;
import com.ctre.phoenix6.signals.RGBWColor;
/**
* Subsystem that controls an addressable LED strip using a CANdle.
*/
public class LEDSubsystem extends SubsystemBase {
Timer _timer;
ShuffleboardTab teb = Shuffleboard.getTab("teb");
private GenericEntry equipe =
teb.add("equipe commence (bleu = ouvert, rouge = fermé)", true).withWidget(BuiltInWidgets.kToggleSwitch).getEntry();
private final CANBus kCANBus = new CANBus("rio");
private final CANdle m_candle = new CANdle(17, kCANBus);
public void Bleu(){
m_candle.setControl(new SolidColor(0, 80).withColor(new RGBWColor(255, 0, 0, 0)));
}
public void Rouge(){
m_candle.setControl(new SolidColor(0, 80).withColor(new RGBWColor(0, 0, 255, 0)));
}
public void Vert(){
m_candle.setControl(new SolidColor(0, 80).withColor(new RGBWColor(0, 255, 0, 0)));
}
public void Noir(){
m_candle.setControl(new SolidColor(0, 80).withColor(new RGBWColor(0, 0, 0, 0)));
}
public void Flash(boolean couleur){
if(_timer.get() <0.5){
if(couleur){
Bleu();
}
else{
Rouge();
}
}
else{
Noir();
_timer.reset();
}
}
public LEDSubsystem() {
setDefaultCommand(updateLEDs());
_timer = new Timer();
_timer.reset();
_timer.start();
}
public boolean Equipe(){
return equipe.getBoolean(false);
}
/**
* Updates the animations and LEDs of the CANdle.
*
* @return Command to run
*/
public Command updateLEDs() {
double temps = DriverStation.getMatchTime();
return run(() -> {
if(Equipe()){
if(temps > 110){
Vert();
}
else if(temps > 88){
Bleu();
}
else if(temps > 85){
Flash(true);
}
else if(temps > 63){
Rouge();
}
else if(temps > 60){
Flash(false);
}
else if(temps > 33){
Bleu();
}
else if(temps > 30){
Flash(true);
}
else if(temps > 13){
Rouge();
}
else if(temps > 10){
Flash(false);
}
else if(temps < 10){
Vert();
}
}
else{
if(temps > 110){
Vert();
}
else if(temps > 88){
Rouge();
}
else if(temps > 85){
Flash(false);
}
else if(temps > 63){
Bleu();
}
else if(temps > 60){
Flash(true);
}
else if(temps > 33){
Rouge();
}
else if(temps > 30){
Flash(false);
}
else if(temps > 13){
Bleu();
}
else if(temps > 10){
Flash(true);
}
else if(temps < 10){
Vert();
}
}
});
}
}