]> git.taranathan.com Git - FRC2026.git/commitdiff
Update LED code.
authorArnav495 <arnieincyberland@gmail.com>
Sun, 18 Jan 2026 20:14:36 +0000 (12:14 -0800)
committerArnav495 <arnieincyberland@gmail.com>
Sun, 18 Jan 2026 20:14:36 +0000 (12:14 -0800)
src/main/java/frc/robot/subsystems/LED/LED.java

index 8bceb402d560d390a8f47f6fc1bb1cf0017b6b83..ef087e842987142cbae355e96dea5a248c094853 100644 (file)
 package frc.robot.subsystems.LED;
 
+import com.ctre.phoenix6.configs.CANdleConfigurator;
+import com.ctre.phoenix6.configs.CANdleFeaturesConfigs;
+import com.ctre.phoenix6.configs.LEDConfigs;
+import com.ctre.phoenix6.controls.ControlRequest;
+import com.ctre.phoenix6.controls.SolidColor;
+import com.ctre.phoenix6.hardware.CANdle;
+import com.ctre.phoenix6.signals.Enable5VRailValue;
+import com.ctre.phoenix6.signals.LossOfSignalBehaviorValue;
+import com.ctre.phoenix6.signals.RGBWColor;
+import com.ctre.phoenix6.signals.StatusLedWhenActiveValue;
+import com.ctre.phoenix6.signals.StripTypeValue;
+import com.ctre.phoenix6.signals.VBatOutputModeValue;
+
 import edu.wpi.first.wpilibj2.command.SubsystemBase;
-import frc.robot.constants.Constants;
 import frc.robot.constants.IdConstants;
 
-import com.ctre.phoenix.led.CANdle;
-import com.ctre.phoenix.led.CANdle.LEDStripType;
-import com.ctre.phoenix.led.CANdle.VBatOutputMode;
-import com.ctre.phoenix.led.Animation;
-
 public class LED extends SubsystemBase {
 
-    private CANdle candle;
-    public static final int stripLength = 67;
+       private CANdle candle;
+       public static final int stripLength = 67;
+
+       // Constructor
+       public LED() {
+               candle = new CANdle(IdConstants.CANDLE_ID);
+               CANdleConfigurator configurator = candle.getConfigurator();
 
-    // Constructor
-    public LED() {
-        this.candle = new CANdle(IdConstants.CANDLE_ID);
+               LEDConfigs ledConf = new LEDConfigs()
+                               .withStripType(StripTypeValue.GRB)
+                               .withLossOfSignalBehavior(LossOfSignalBehaviorValue.KeepRunning)
+                               .withBrightnessScalar(1);
 
-        candle.configStatusLedState(false);
-        candle.configLOSBehavior(false);
+               CANdleFeaturesConfigs featureConf = new CANdleFeaturesConfigs()
+                               .withEnable5VRail(Enable5VRailValue.Enabled) // Turns off LEDs
+                               .withStatusLedWhenActive(StatusLedWhenActiveValue.Disabled)
+                               .withVBatOutputMode(VBatOutputModeValue.On);
 
-        System.out.println("Strip type ec: " + candle.configLEDType(LEDStripType.GRB));
+               configurator.apply(featureConf);
+               configurator.apply(ledConf);
 
-        candle.configBrightnessScalar(1);
-        candle.configVBatOutput(VBatOutputMode.On);
-        candle.configV5Enabled(true); // Turns off LEDs
-    }
+               System.out.println("CANdle features: " + featureConf + ", LED config: " + ledConf);
+       }
 
-    @Override
-    public void periodic() {
-    }
+       @Override
+       public void periodic() {
+       }
 
-    /**
-     * Sets the color of all the LEDs.
-     *
-     * @param red   Red value (0-255)
-     * @param green Green value (0-255)
-     * @param blue  Blue value (0-255)
-     */
-    public void setLEDs(int red, int green, int blue) {
-        candle.setLEDs(red, green, blue);
-    }
+       /**
+        * Sets the color of all the LEDs.
+        *
+        * @param red   Red value (0-255)
+        * @param green Green value (0-255)
+        * @param blue  Blue value (0-255)
+        */
+       public void setLEDs(int red, int green, int blue) {
+               setSection(red, green, blue, 0, stripLength);
+       }
 
-   /**
-     * Sets an animation for the LEDs.
-     *
-     * @param animation The animation object (e.g., RainbowAnimation, StrobeAnimation, etc.)
-     */
-    public void animate(Animation animation) {
-        candle.animate(animation);
-    }
+       /**
+        * Sets an animation for the LEDs.
+        *
+        * @param animation The animation object (e.g., RainbowAnimation,
+        *                  StrobeAnimation, etc.)
+        */
+       public void animate(ControlRequest animation) {
+               candle.setControl(animation);
+       }
 
-    /**
-     * Sets the color of a specific section of LEDs.
-     *
-     * @param r     Red value (0-255)
-     * @param g     Green value (0-255)
-     * @param b     Blue value (0-255)
-     * @param start Start index of the section
-     * @param end   End index of the section
-     */
-    public void setSection(int r, int g, int b, int start, int end) {
-        candle.setLEDs(r, g, b, 0, start, end);
-    }
+       /**
+        * Sets the color of a specific section of LEDs.
+        *
+        * @param r     Red value (0-255)
+        * @param g     Green value (0-255)
+        * @param b     Blue value (0-255)
+        * @param start Start index of the section
+        * @param end   End index of the section
+        */
+       public void setSection(int r, int g, int b, int start, int end) {
+               SolidColor request = new SolidColor(start, end)
+                               .withColor(new RGBWColor(r, g, b));
+               candle.setControl(request);
+       }
 
-    /**
-     * Creates an alternating pattern of two colors across the LEDs.
-     *
-     * @param r1     Red value of the first color (0-255)
-     * @param g1     Green value of the first color (0-255)
-     * @param b1     Blue value of the first color (0-255)
-     * @param r2     Red value of the second color (0-255)
-     * @param g2     Green value of the second color (0-255)
-     * @param b2     Blue value of the second color (0-255)
-     * @param size   Size of each color block
-     * @param offset Offset for the starting position of the pattern
-     * @param total  Total number of LEDs
-     */
-    public void alternate(int r1, int g1, int b1, int r2, int g2, int b2, int size, int offset, int total) {
-        for (int i = -offset; i < total; i += size) {
-            boolean color2 = ((i - offset) / size) % 2 == 0;
-            if (color2) {
-                setSection(r2, g2, b2, i, i + size - 1);
-            } else {
-                setSection(r1, g1, b1, i, i + size - 1);
-            }
-        }
-    }
+       /**
+        * Creates an alternating pattern of two colors across the LEDs.
+        *
+        * @param r1     Red value of the first color (0-255)
+        * @param g1     Green value of the first color (0-255)
+        * @param b1     Blue value of the first color (0-255)
+        * @param r2     Red value of the second color (0-255)
+        * @param g2     Green value of the second color (0-255)
+        * @param b2     Blue value of the second color (0-255)
+        * @param size   Size of each color block
+        * @param offset Offset for the starting position of the pattern
+        * @param total  Total number of LEDs
+        */
+       public void alternate(int r1, int g1, int b1, int r2, int g2, int b2, int size, int offset, int total) {
+               for (int i = -offset; i < total; i += size) {
+                       boolean color2 = ((i - offset) / size) % 2 == 0;
+                       if (color2) {
+                               setSection(r2, g2, b2, i, i + size - 1);
+                       } else {
+                               setSection(r1, g1, b1, i, i + size - 1);
+                       }
+               }
+       }
 }