From eb54834193472c2a0bd0ff3ff28dd26773f3d886 Mon Sep 17 00:00:00 2001 From: Luddo183 <93882319+Luddo183@users.noreply.github.com> Date: Sat, 21 Mar 2026 13:40:50 -0400 Subject: [PATCH 1/3] wip --- .../lib/motors/dumb/DumbMotorIOSparkFlex.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/main/java/org/team2342/lib/motors/dumb/DumbMotorIOSparkFlex.java diff --git a/src/main/java/org/team2342/lib/motors/dumb/DumbMotorIOSparkFlex.java b/src/main/java/org/team2342/lib/motors/dumb/DumbMotorIOSparkFlex.java new file mode 100644 index 0000000..7118ff4 --- /dev/null +++ b/src/main/java/org/team2342/lib/motors/dumb/DumbMotorIOSparkFlex.java @@ -0,0 +1,35 @@ +package org.team2342.lib.motors.dumb; + +import org.team2342.lib.motors.MotorConfig; +import org.team2342.lib.motors.dumb.DumbMotorIO.DumbMotorIOInputs; + +import com.revrobotics.ResetMode; +import com.revrobotics.spark.SparkFlex; +import com.revrobotics.spark.SparkBase; +import com.revrobotics.spark.SparkLowLevel.MotorType; +import com.revrobotics.spark.config.SparkBaseConfig; +import com.revrobotics.spark.config.SparkFlexConfig; + +import edu.wpi.first.math.filter.Debouncer; + +public class DumbMotorIOSparkFlex { + + private final SparkFlex motor; + private final SparkFlexConfig motorConfig = new SparkFlexConfig(); + private final Debouncer connectedDebouncer = new Debouncer(0.5); + + public DumbMotorIOSparkFlex(int canID, MotorConfig config, MotorType type) { + motor = new SparkFlex(canID, type); + motorConfig.inverted(config.motorInverted); + //motorConfig.idleMode(config.idleMode); + + motor.configure(motorConfig , ResetMode.kNoResetSafeParameters, PersistMode.kNoPersistParameters); + } + + public void updateInputs(DumbMotorIOInputs inputs) { + inputs.connected = connectedDebouncer.calculate(true); + inputs.appliedVolts + } + + +} From 012ea75b559b126e9a8b81334ba7a689b3d2a747 Mon Sep 17 00:00:00 2001 From: abi-appusamy9932 Date: Sat, 21 Mar 2026 14:34:49 -0400 Subject: [PATCH 2/3] SparkFlex dumb motor --- .../lib/motors/dumb/DumbMotorIOSparkFlex.java | 76 +++++++++++++------ 1 file changed, 53 insertions(+), 23 deletions(-) diff --git a/src/main/java/org/team2342/lib/motors/dumb/DumbMotorIOSparkFlex.java b/src/main/java/org/team2342/lib/motors/dumb/DumbMotorIOSparkFlex.java index 7118ff4..b5190ff 100644 --- a/src/main/java/org/team2342/lib/motors/dumb/DumbMotorIOSparkFlex.java +++ b/src/main/java/org/team2342/lib/motors/dumb/DumbMotorIOSparkFlex.java @@ -1,35 +1,65 @@ -package org.team2342.lib.motors.dumb; +// Copyright (c) 2026 Team 2342 +// https://github.com/FRCTeamPhoenix +// +// This source code is licensed under the MIT License. +// See the LICENSE file in the root directory of this project. -import org.team2342.lib.motors.MotorConfig; -import org.team2342.lib.motors.dumb.DumbMotorIO.DumbMotorIOInputs; +package org.team2342.lib.motors.dumb; -import com.revrobotics.ResetMode; import com.revrobotics.spark.SparkFlex; -import com.revrobotics.spark.SparkBase; -import com.revrobotics.spark.SparkLowLevel.MotorType; import com.revrobotics.spark.config.SparkBaseConfig; +import com.revrobotics.spark.SparkLowLevel.MotorType; import com.revrobotics.spark.config.SparkFlexConfig; - import edu.wpi.first.math.filter.Debouncer; +import org.team2342.lib.motors.MotorConfig; + +public class DumbMotorIOSparkFlex implements DumbMotorIO { -public class DumbMotorIOSparkFlex { - - private final SparkFlex motor; - private final SparkFlexConfig motorConfig = new SparkFlexConfig(); - private final Debouncer connectedDebouncer = new Debouncer(0.5); + private final SparkFlex motor; + private final SparkFlexConfig motorConfig = new SparkFlexConfig(); + private final Debouncer connectedDebouncer = new Debouncer(0.5); - public DumbMotorIOSparkFlex(int canID, MotorConfig config, MotorType type) { - motor = new SparkFlex(canID, type); - motorConfig.inverted(config.motorInverted); - //motorConfig.idleMode(config.idleMode); + /** + * Constructor to configure the TalonFX motor controller + * + * @param canID The CAN ID of the TalonFX motor controller + * @param config The configuration settings for the motor + * @param type The type of motor being controlled + */ + @SuppressWarnings("removal") +public DumbMotorIOSparkFlex(int canID, MotorConfig config, MotorType type) { + motor = new SparkFlex(canID, type); + motorConfig.inverted(config.motorInverted); + motorConfig.idleMode(config.idleMode == MotorConfig.IdleMode.BRAKE + ? SparkBaseConfig.IdleMode.kBrake + : SparkBaseConfig.IdleMode.kCoast); + motorConfig.smartCurrentLimit((int) config.supplyLimit); - motor.configure(motorConfig , ResetMode.kNoResetSafeParameters, PersistMode.kNoPersistParameters); - } + motor.configure( + motorConfig, + SparkFlex.ResetMode.kNoResetSafeParameters, + SparkFlex.PersistMode.kNoPersistParameters); + } - public void updateInputs(DumbMotorIOInputs inputs) { - inputs.connected = connectedDebouncer.calculate(true); - inputs.appliedVolts - } + /** + * Updates the inputs for the motor controller + * + * @param inputs The inputs object to update with current values + */ + @Override + public void updateInputs(DumbMotorIOInputs inputs) { + inputs.connected = connectedDebouncer.calculate(true); + inputs.appliedVolts = motor.getAppliedOutput() * motor.getBusVoltage(); + inputs.currentAmps = motor.getOutputCurrent(); + } - + /** + * Sets the motor to run at the specified voltage + * + * @param voltage The desired voltage to apply to the motor + */ + @Override + public void runVoltage(double volts) { + motor.setVoltage(volts); + } } From cdb7aadfb21c74997196e5e89de611cb5103d563 Mon Sep 17 00:00:00 2001 From: Luddo183 <93882319+Luddo183@users.noreply.github.com> Date: Sun, 22 Mar 2026 15:43:36 -0400 Subject: [PATCH 3/3] minor changes --- .../lib/motors/dumb/DumbMotorIOSparkFlex.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/team2342/lib/motors/dumb/DumbMotorIOSparkFlex.java b/src/main/java/org/team2342/lib/motors/dumb/DumbMotorIOSparkFlex.java index b5190ff..44f3078 100644 --- a/src/main/java/org/team2342/lib/motors/dumb/DumbMotorIOSparkFlex.java +++ b/src/main/java/org/team2342/lib/motors/dumb/DumbMotorIOSparkFlex.java @@ -6,9 +6,12 @@ package org.team2342.lib.motors.dumb; +import com.revrobotics.PersistMode; +import com.revrobotics.REVLibError; +import com.revrobotics.ResetMode; import com.revrobotics.spark.SparkFlex; -import com.revrobotics.spark.config.SparkBaseConfig; import com.revrobotics.spark.SparkLowLevel.MotorType; +import com.revrobotics.spark.config.SparkBaseConfig; import com.revrobotics.spark.config.SparkFlexConfig; import edu.wpi.first.math.filter.Debouncer; import org.team2342.lib.motors.MotorConfig; @@ -26,19 +29,16 @@ public class DumbMotorIOSparkFlex implements DumbMotorIO { * @param config The configuration settings for the motor * @param type The type of motor being controlled */ - @SuppressWarnings("removal") -public DumbMotorIOSparkFlex(int canID, MotorConfig config, MotorType type) { + public DumbMotorIOSparkFlex(int canID, MotorConfig config, MotorType type) { motor = new SparkFlex(canID, type); motorConfig.inverted(config.motorInverted); - motorConfig.idleMode(config.idleMode == MotorConfig.IdleMode.BRAKE - ? SparkBaseConfig.IdleMode.kBrake - : SparkBaseConfig.IdleMode.kCoast); + motorConfig.idleMode( + config.idleMode == MotorConfig.IdleMode.BRAKE + ? SparkBaseConfig.IdleMode.kBrake + : SparkBaseConfig.IdleMode.kCoast); motorConfig.smartCurrentLimit((int) config.supplyLimit); - motor.configure( - motorConfig, - SparkFlex.ResetMode.kNoResetSafeParameters, - SparkFlex.PersistMode.kNoPersistParameters); + motor.configure(motorConfig, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); } /** @@ -48,7 +48,7 @@ public DumbMotorIOSparkFlex(int canID, MotorConfig config, MotorType type) { */ @Override public void updateInputs(DumbMotorIOInputs inputs) { - inputs.connected = connectedDebouncer.calculate(true); + inputs.connected = connectedDebouncer.calculate(motor.getLastError() == REVLibError.kOk); inputs.appliedVolts = motor.getAppliedOutput() * motor.getBusVoltage(); inputs.currentAmps = motor.getOutputCurrent(); }