// Copyright (c) FIRST and other WPILib contributors. // Open Source Software; you can modify and/or share it under the terms of // the WPILib BSD license file in the root directory of this project. package frc.robot.subsystems; import java.util.Optional; import com.ctre.phoenix.led.CANdle; import com.ctre.phoenix.led.RainbowAnimation; import edu.wpi.first.networktables.GenericEntry; import edu.wpi.first.wpilibj.DriverStation; import edu.wpi.first.wpilibj.DriverStation.Alliance; 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.SubsystemBase; public class Led extends SubsystemBase { ShuffleboardTab teb = Shuffleboard.getTab("teb"); private GenericEntry equipe = teb.add("equipe commence (bleu = ouvert, rouge = fermé)", true).withWidget(BuiltInWidgets.kToggleSwitch).getEntry(); CANdle CANDle = new CANdle(17); RainbowAnimation rainbowAnim = new RainbowAnimation(); public void bleu(){ CANDle.setLEDs(0, 0, 255,0,0,8); CANDle.setLEDs(0, 0, 255,0,16,8); CANDle.setLEDs(0, 0, 255,0,32,8); CANDle.setLEDs(0, 0, 255,0,56,8); CANDle.setLEDs(0, 0, 255,0,72,8); CANDle.setLEDs(0, 0, 255,0,88,8); CANDle.setLEDs(0, 0, 255,0,104,8); CANDle.setLEDs(0, 0, 255,0,120,8); CANDle.setLEDs(0, 0, 255,0,136,8); } public void Vert1(){ CANDle.setLEDs(0, 255, 0,0,0,8); CANDle.setLEDs(0, 255, 0,0,16,8); CANDle.setLEDs(0, 255, 0,0,32,8); CANDle.setLEDs(0, 255, 0,0,56,8); CANDle.setLEDs(0, 255, 0,0,72,8); CANDle.setLEDs(0, 255, 0,0,88,8); CANDle.setLEDs(0, 255, 0,0,104,8); CANDle.setLEDs(0, 255, 0,0,120,8); CANDle.setLEDs(0, 255, 0,0,136,8); } public void Rouge(){ CANDle.setLEDs(255, 0, 0,0,0,8); CANDle.setLEDs(255, 0, 0,0,16,8); CANDle.setLEDs(255, 0, 0,0,32,8); CANDle.setLEDs(255, 0, 0,0,48,8); CANDle.setLEDs(255, 0, 0,0,64,8); CANDle.setLEDs(255, 0, 0,0,80,8); CANDle.setLEDs(255, 0, 0,0,96,8); CANDle.setLEDs(255, 0, 0,0,112,8); CANDle.setLEDs(255, 0, 0,0,128,8); } public void Jaune2(){ CANDle.setLEDs(255, 255, 0,0,8,8); CANDle.setLEDs(255, 255, 0,0,24,8); CANDle.setLEDs(255, 255, 0,0,40,8); CANDle.setLEDs(255, 255, 0,0,56,8); CANDle.setLEDs(255, 255, 0,0,72,8); CANDle.setLEDs(255, 255, 0,0,88,8); CANDle.setLEDs(255, 255, 0,0,104,8); CANDle.setLEDs(255, 255, 0,0,120,8); CANDle.setLEDs(255, 255, 0,0,136,8); } public void Rouge2(){ CANDle.setLEDs(255, 0, 0,0,8,8); CANDle.setLEDs(255, 0, 0,0,24,8); CANDle.setLEDs(255, 0, 0,0,40,8); CANDle.setLEDs(255, 0, 0,0,56,8); CANDle.setLEDs(255, 0, 0,0,72,8); CANDle.setLEDs(255, 0, 0,0,88,8); CANDle.setLEDs(255, 0, 0,0,104,8); CANDle.setLEDs(255, 0, 0,0,120,8); CANDle.setLEDs(255, 0, 0,0,136,8); } public void RainBow(){ CANDle.animate(rainbowAnim); } public void RainBowStop(){ CANDle.animate(null); } public boolean Equipe(){ return equipe.getBoolean(true); } /** Creates a new Led. */ public Led() {} @Override public void periodic() { double temps = DriverStation.getMatchTime(); if(temps > 20 && temps < 30){ Vert1(); } if(Equipe()){ if(temps > 30 && temps < 55){ bleu(); } else if(temps > 30 && temps < 80){ Rouge(); } else if(temps > 80 && temps < 105){ bleu(); } else if(temps > 105 && temps < 130){ Rouge(); } else{ RainBow(); } } else{ if(temps > 30 && temps < 55){ Rouge(); } else if(temps > 30 && temps < 80){ bleu(); } else if(temps > 80 && temps < 105){ Rouge(); } else if(temps > 105 && temps < 130){ bleu(); } else{ RainBow(); } } // This method will be called once per scheduler run } }