Files
Rebuilt-2026/src/main/java/frc/robot/subsystems/Led.java
samuel desharnais 7f0f957ad1 led selon distance
2026-03-24 18:02:23 -04:00

137 lines
3.9 KiB
Java

// 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
}
}