From ef1d68b41aafc500193f02141b3e4ab6cf6d5680 Mon Sep 17 00:00:00 2001 From: blaze Date: Sat, 6 Apr 2024 10:28:53 -0400 Subject: [PATCH 1/3] adding leds to the lib, UNTESTED --- .../com/orbit/frc/subsystems/leds/Leds.java | 38 +++++++++++++++++++ .../orbit/frc/subsystems/leds/LedsConfig.java | 18 +++++++++ 2 files changed, 56 insertions(+) create mode 100644 src/main/java/com/orbit/frc/subsystems/leds/Leds.java create mode 100644 src/main/java/com/orbit/frc/subsystems/leds/LedsConfig.java diff --git a/src/main/java/com/orbit/frc/subsystems/leds/Leds.java b/src/main/java/com/orbit/frc/subsystems/leds/Leds.java new file mode 100644 index 0000000..db2d7b1 --- /dev/null +++ b/src/main/java/com/orbit/frc/subsystems/leds/Leds.java @@ -0,0 +1,38 @@ +package com.orbit.frc.subsystems.leds; + +import java.util.prefs.Preferences; +import java.util.HashMap; + +import edu.wpi.first.wpilibj.Spark; +import edu.wpi.first.wpilibj2.command.SubsystemBase; +import main.java.com.orbit.frc.subsystems.leds.PivotConfig.LEDStates; + +public class Leds extends SubsystemBase{ + private final LedConfig config; + + private Spark LEDController; + private double LEDColour; + public LEDStates LEDstate; + + HashMap LEDStatesMap = new HashMap<>(); + + public Leds(LedConfig config) { + this.LEDController = new Spark(config.LEDPort); + this.LEDColour = 0.0; + this.LEDstate = LEDStates.ENABLED; + } + + public void addLEDState(String state, double colour) { + LEDStatesMap.put(state, colour); + } + + public void setLEDState(String state) { + this.LEDstate = state; + } + + @Override + public void periodic() { + this.LEDColour = LEDStatesMap.get(this.LEDstate); + this.LEDController.set(this.LEDColour); + } +} diff --git a/src/main/java/com/orbit/frc/subsystems/leds/LedsConfig.java b/src/main/java/com/orbit/frc/subsystems/leds/LedsConfig.java new file mode 100644 index 0000000..80932af --- /dev/null +++ b/src/main/java/com/orbit/frc/subsystems/leds/LedsConfig.java @@ -0,0 +1,18 @@ +package main.java.com.orbit.frc.subsystems.leds; + +import com.revrobotics.CANSparkBase; +import com.revrobotics.CANSparkMax; +import com.revrobotics.CANSparkFlex; +import com.revrobotics.CANSparkLowLevel.MotorType; + +import edu.wpi.first.wpilibj.AnalogEncoder; + +import com.orbit.frc.subsystems.SubsystemConfig; + +public class LedsConfig extends SubsystemConfig{ + + /* Encoder config + * + */ + public int LEDPort; +} From 02c00f3e70efc6a16447448a7374b7ead1cfab57 Mon Sep 17 00:00:00 2001 From: blaze Date: Mon, 8 Apr 2024 10:49:43 -0400 Subject: [PATCH 2/3] Added docs for leds and edited readme --- README.md | 1 + .../com/orbit/frc/subsystems/leds/Leds.java | 60 ++++++++++++++----- 2 files changed, 46 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 842cb28..e2fb442 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ Currently available subsystems: - Intake stop switch - Pivot - Telescope +- LEDs Planned features: - Intake and flywheel linear speed control diff --git a/src/main/java/com/orbit/frc/subsystems/leds/Leds.java b/src/main/java/com/orbit/frc/subsystems/leds/Leds.java index db2d7b1..ff02948 100644 --- a/src/main/java/com/orbit/frc/subsystems/leds/Leds.java +++ b/src/main/java/com/orbit/frc/subsystems/leds/Leds.java @@ -1,38 +1,68 @@ +/* + * Package: com.orbit.frc.subsystems.leds + * Description: This package contains classes related to controlling LEDs on a robot. + */ + package com.orbit.frc.subsystems.leds; -import java.util.prefs.Preferences; import java.util.HashMap; import edu.wpi.first.wpilibj.Spark; import edu.wpi.first.wpilibj2.command.SubsystemBase; -import main.java.com.orbit.frc.subsystems.leds.PivotConfig.LEDStates; -public class Leds extends SubsystemBase{ - private final LedConfig config; +/* + * Class: Leds + * Description: This class represents the subsystem responsible for controlling LEDs on a robot. + */ +public class Leds extends SubsystemBase { + private final LedConfig config; // Configuration object for LEDs - private Spark LEDController; - private double LEDColour; - public LEDStates LEDstate; + private Spark LEDController; // Spark object for controlling LEDs + private double LEDColour; // Current color of LEDs + public LEDStates LEDstate; // Current state of LEDs - HashMap LEDStatesMap = new HashMap<>(); + HashMap LEDStatesMap = new HashMap<>(); // Map to store LED states and corresponding colors + /* + * Constructor: Leds + * Description: Initializes the LED subsystem with the provided configuration. + * Parameters: + * - config: Configuration object for LEDs + */ public Leds(LedConfig config) { - this.LEDController = new Spark(config.LEDPort); - this.LEDColour = 0.0; - this.LEDstate = LEDStates.ENABLED; + this.LEDController = new Spark(config.LEDPort); // Initialize LED controller + this.LEDColour = 0.0; // Default LED color + this.LEDstate = LEDStates.ENABLED; // Default LED state } + /* + * Method: addLEDState + * Description: Adds a new LED state with the specified color to the LED states map. + * Parameters: + * - state: Name of the LED state + * - colour: Color of the LED state from revdocs + */ public void addLEDState(String state, double colour) { - LEDStatesMap.put(state, colour); + LEDStatesMap.put(state, colour); // Add LED state to the map } + /* + * Method: setLEDState + * Description: Sets the current LED state. + * Parameters: + * - state: Name of the LED state to set + */ public void setLEDState(String state) { - this.LEDstate = state; + this.LEDstate = state; // Set LED state } + /* + * Method: periodic + * Description: This method is called periodically to update the LED color based on the current LED state. + */ @Override public void periodic() { - this.LEDColour = LEDStatesMap.get(this.LEDstate); - this.LEDController.set(this.LEDColour); + this.LEDColour = LEDStatesMap.get(this.LEDstate); // Get color for the current LED state + this.LEDController.set(this.LEDColour); // Set LED color } } From 30c7666aa1f4e959757d2de8e67e8b9bd1aa15cf Mon Sep 17 00:00:00 2001 From: blaze Date: Tue, 9 Apr 2024 13:34:08 -0400 Subject: [PATCH 3/3] cleaned up import --- src/main/java/com/orbit/frc/subsystems/leds/Leds.java | 3 +-- .../java/com/orbit/frc/subsystems/leds/LedsConfig.java | 10 ++-------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/orbit/frc/subsystems/leds/Leds.java b/src/main/java/com/orbit/frc/subsystems/leds/Leds.java index ff02948..a065a73 100644 --- a/src/main/java/com/orbit/frc/subsystems/leds/Leds.java +++ b/src/main/java/com/orbit/frc/subsystems/leds/Leds.java @@ -14,10 +14,9 @@ * Class: Leds * Description: This class represents the subsystem responsible for controlling LEDs on a robot. */ -public class Leds extends SubsystemBase { +public class Leds { private final LedConfig config; // Configuration object for LEDs - private Spark LEDController; // Spark object for controlling LEDs private double LEDColour; // Current color of LEDs public LEDStates LEDstate; // Current state of LEDs diff --git a/src/main/java/com/orbit/frc/subsystems/leds/LedsConfig.java b/src/main/java/com/orbit/frc/subsystems/leds/LedsConfig.java index 80932af..30987e8 100644 --- a/src/main/java/com/orbit/frc/subsystems/leds/LedsConfig.java +++ b/src/main/java/com/orbit/frc/subsystems/leds/LedsConfig.java @@ -1,18 +1,12 @@ package main.java.com.orbit.frc.subsystems.leds; -import com.revrobotics.CANSparkBase; -import com.revrobotics.CANSparkMax; -import com.revrobotics.CANSparkFlex; -import com.revrobotics.CANSparkLowLevel.MotorType; - -import edu.wpi.first.wpilibj.AnalogEncoder; - import com.orbit.frc.subsystems.SubsystemConfig; public class LedsConfig extends SubsystemConfig{ - /* Encoder config + /* LED config * */ public int LEDPort; + public Spark LEDController; }