/* 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(); } } }); } }