diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/src/main/java/frc/robot/subsystems/Climber/Climber.java b/src/main/java/frc/robot/subsystems/Climber/Climber.java new file mode 100644 index 0000000..48f2cc5 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/Climber/Climber.java @@ -0,0 +1,49 @@ +package frc.robot.subsystems.climber; + +import edu.wpi.first.wpilibj2.command.SubsystemBase; +import com.revrobotics.spark.SparkMax; +import com.revrobotics.spark.SparkLowLevel.MotorType; +import com.revrobotics.RelativeEncoder; +import com.revrobotics.spark.SparkClosedLoopController; +import com.revrobotics.spark.config.SparkMaxConfig; +import com.revrobotics.spark.SparkBase.PersistMode; +import com.revrobotics.spark.SparkBase.ResetMode; +import com.revrobotics.spark.config.SparkBaseConfig.IdleMode; +import com.revrobotics.spark.SparkBase.ControlType; + +public class Climber extends SubsystemBase { + private static final double DEPLOY_POSITION = 3.00; // Change this value as needed (Unit is rotations) + private static final double RETRACT_POSITION = 0.00; // Change this value as needed (Unit is rotations) + private final SparkMax climberMotor; + private final RelativeEncoder climberEncoder; + private final SparkClosedLoopController climberController; + + public Climber(int ClimberMotorID) { + //Motor initialization + this.climberMotor = new SparkMax(ClimberMotorID, MotorType.kBrushless); + //Encoder initialization + climberEncoder = climberMotor.getEncoder(); + climberEncoder.setPosition(0.0); + + //Closed loop controller initialization + climberController = climberMotor.getClosedLoopController(); + + SparkMaxConfig config = new SparkMaxConfig(); + config.smartCurrentLimit(20); //20 amps + config.idleMode(IdleMode.kBrake); + climberMotor.configure(config, ResetMode.kResetSafeParameters, PersistMode.kNoPersistParameters); // Note to set PID in this line + } + + public void gotoPOS(double position) { + climberController.setReference(position, ControlType.kPosition); + } + + + public void deploy() { + gotoPOS(DEPLOY_POSITION); + } + + public void retract() { + gotoPOS(RETRACT_POSITION); + } +} \ No newline at end of file diff --git a/vendordeps/photonlib.json b/vendordeps/photonlib.json index 4f9a5d1..a1bc5a5 100644 --- a/vendordeps/photonlib.json +++ b/vendordeps/photonlib.json @@ -1,7 +1,7 @@ { "fileName": "photonlib.json", "name": "photonlib", - "version": "v2026.1.1-rc-4", + "version": "v2026.1.1", "uuid": "515fe07e-bfc6-11fa-b3de-0242ac130004", "frcYear": "2026", "mavenUrls": [ @@ -13,7 +13,7 @@ { "groupId": "org.photonvision", "artifactId": "photontargeting-cpp", - "version": "v2026.1.1-rc-4", + "version": "v2026.1.1", "skipInvalidPlatforms": true, "isJar": false, "validPlatforms": [ @@ -28,7 +28,7 @@ { "groupId": "org.photonvision", "artifactId": "photonlib-cpp", - "version": "v2026.1.1-rc-4", + "version": "v2026.1.1", "libName": "photonlib", "headerClassifier": "headers", "sharedLibrary": true, @@ -43,7 +43,7 @@ { "groupId": "org.photonvision", "artifactId": "photontargeting-cpp", - "version": "v2026.1.1-rc-4", + "version": "v2026.1.1", "libName": "photontargeting", "headerClassifier": "headers", "sharedLibrary": true, @@ -60,12 +60,12 @@ { "groupId": "org.photonvision", "artifactId": "photonlib-java", - "version": "v2026.1.1-rc-4" + "version": "v2026.1.1" }, { "groupId": "org.photonvision", "artifactId": "photontargeting-java", - "version": "v2026.1.1-rc-4" + "version": "v2026.1.1" } ] } \ No newline at end of file