Skip to content

Commit 1924b92

Browse files
committed
Add starter class for elevator limits and servo
1 parent 4514204 commit 1924b92

File tree

4 files changed

+101
-9
lines changed

4 files changed

+101
-9
lines changed

src/main/java/frc/robot/Robot.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.ctre.phoenix6.swerve.SwerveModuleConstants;
1717
import com.ctre.phoenix6.swerve.SwerveModuleConstants.DriveMotorArrangement;
1818
import com.ctre.phoenix6.swerve.SwerveModuleConstants.SteerMotorArrangement;
19+
import edu.wpi.first.wpilibj.Timer;
1920
import edu.wpi.first.wpilibj2.command.Command;
2021
import edu.wpi.first.wpilibj2.command.CommandScheduler;
2122
import frc.robot.generated.TunerConstants;
@@ -119,6 +120,10 @@ public void robotPeriodic() {
119120
// Threads.setCurrentThreadPriority(false, 10);
120121
}
121122

123+
public static boolean isJITing() {
124+
return Timer.getTimestamp() < 45.0;
125+
}
126+
122127
/** This function is called once when the robot is disabled. */
123128
@Override
124129
public void disabledInit() {}

src/main/java/frc/robot/subsystems/elevator/Elevator.java

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
import edu.wpi.first.math.filter.Debouncer;
44
import edu.wpi.first.math.filter.Debouncer.DebounceType;
5-
import edu.wpi.first.math.trajectory.TrapezoidProfile;
65
import edu.wpi.first.wpilibj.Alert;
76
import edu.wpi.first.wpilibj2.command.SubsystemBase;
7+
import frc.robot.Robot;
88
import frc.robot.util.LoggedTunableNumber;
99
import java.util.function.BooleanSupplier;
10-
import java.util.function.Supplier;
1110
import org.littletonrobotics.junction.AutoLogOutput;
11+
import org.littletonrobotics.junction.Logger;
1212

1313
public class Elevator extends SubsystemBase {
1414

@@ -49,6 +49,7 @@ public class Elevator extends SubsystemBase {
4949
new LoggedTunableNumber("Elevator/Climbing/AutoZeroVoltage");
5050

5151
private final ElevatorIOInputsAutoLogged inputs = new ElevatorIOInputsAutoLogged();
52+
private final LockIOInputsAutoLogged lockInputs = new LockIOInputsAutoLogged();
5253

5354
private final Debouncer motorConnectedDebouncer = new Debouncer(0.5, DebounceType.kFalling);
5455
private final Debouncer followerMotorConnectedDebouncer =
@@ -64,18 +65,36 @@ public class Elevator extends SubsystemBase {
6465
@AutoLogOutput private boolean brakeModeEnabled = true;
6566

6667
private final ElevatorIO io;
68+
private final LockIO lockio;
6769

68-
public Elevator(ElevatorIO io) {
70+
public Elevator(ElevatorIO io, LockIO lock) {
6971
this.io = io;
72+
this.lockio = lock;
7073
}
7174

7275
public void periodic() {
7376
io.updateInputs(inputs);
74-
}
75-
//
76-
// private static final LoggedTunableNumber LimitDIO = new
77-
// LoggedTunableNumber("Elevator/Limit/LimitValue");
78-
// private static final LoggedTunableNumber ServoPosition = new
79-
// LoggedTunableNumber("Elevator/Servo/Position");
77+
lockio.updateInputs(lockInputs);
78+
79+
80+
Logger.processInputs("Elevator", inputs);
81+
Logger.processInputs("ElevatorSafeties", lockInputs);
8082

83+
motorDisconnectedAlert.set(
84+
!motorConnectedDebouncer.calculate(inputs.data.masterConnected()) && !Robot.isJITing());
85+
followerDisconnectedAlert.set(
86+
!followerMotorConnectedDebouncer.calculate(inputs.data.followerConnected())
87+
&& !Robot.isJITing());
88+
89+
// Update tunable numbers (configure before builds and during tuning)
90+
if (kP.hasChanged(hashCode()) || kD.hasChanged(hashCode())) {
91+
io.setPID(kP.get(), 0.0, kD.get());
92+
}
93+
//
94+
// private static final LoggedTunableNumber LimitDIO = new
95+
// LoggedTunableNumber("Elevator/Limit/LimitValue");
96+
// private static final LoggedTunableNumber ServoPosition = new
97+
// LoggedTunableNumber("Elevator/Servo/Position");
98+
99+
}
81100
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package frc.robot.subsystems.elevator;
2+
3+
import org.littletonrobotics.junction.AutoLog;
4+
5+
public interface LockIO {
6+
@AutoLog
7+
class LockIOInputs {
8+
public LockIOData data =
9+
new LockIOData(
10+
false,
11+
0.0,
12+
0.0);
13+
}
14+
15+
record LockIOData(
16+
boolean limit,
17+
double servoAngle,
18+
double servoPosition
19+
) {}
20+
21+
default void update(LockIOInputs inputs) {}
22+
23+
default void setServoAngle(double angleDeg) {}
24+
25+
default void setServo(double position) {}
26+
27+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package frc.robot.subsystems.elevator;
2+
3+
import edu.wpi.first.wpilibj.DigitalInput;
4+
import edu.wpi.first.wpilibj.Servo;
5+
6+
public class LockIOServoAndMagswitch implements LockIO {
7+
8+
private final DigitalInput limit;
9+
private final Servo servo;
10+
11+
private final double servoPosition;
12+
private final double servoAngle;
13+
private final boolean limitValue;
14+
15+
public LockIOServoAndMagswitch() {
16+
limit = new DigitalInput(0); // Adjust the channel as needed
17+
servo = new Servo(1); // Adjust the channel as needed
18+
servoPosition = servo.getPosition(); // Default servo position
19+
servoAngle = servo.getAngle(); // Default servo position
20+
limitValue = limit.get(); // Default limit value
21+
}
22+
23+
@Override
24+
public void update(LockIOInputs inputs) {
25+
inputs.data = new LockIOData(
26+
limit.get(),
27+
servo.get(),
28+
servo.getAngle()
29+
);
30+
}
31+
32+
@Override
33+
public void setServoAngle(double angleDeg) {
34+
servo.setAngle(angleDeg);
35+
}
36+
37+
@Override
38+
public void setServo(double position) {
39+
servo.set(position);
40+
}
41+
}

0 commit comments

Comments
 (0)