Skip to content

Commit ae8d16e

Browse files
committed
more fixes
1 parent cd5f339 commit ae8d16e

File tree

4 files changed

+115
-14
lines changed

4 files changed

+115
-14
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package frc.robot.constants;
2+
3+
import com.ctre.phoenix6.configs.TalonFXConfiguration;
4+
5+
public class FunnelConstants {
6+
public static final double kFunnelPercentOutput = 0;
7+
8+
public static int FunnelFxId = 0;
9+
10+
public static TalonFXConfiguration getFXConfig() {
11+
TalonFXConfiguration fxConfig = new TalonFXConfiguration();
12+
13+
return fxConfig;
14+
}
15+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package frc.robot.subsystems.funnel;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
5+
import org.strykeforce.telemetry.TelemetryService;
6+
7+
import com.ctre.phoenix6.StatusSignal;
8+
import com.ctre.phoenix6.configs.TalonFXConfiguration;
9+
import com.ctre.phoenix6.configs.TalonFXConfigurator;
10+
import com.ctre.phoenix6.controls.DutyCycleOut;
11+
import com.ctre.phoenix6.hardware.TalonFX;
12+
import com.ctre.phoenix6.signals.ReverseLimitValue;
13+
14+
import edu.wpi.first.units.measure.AngularVelocity;
15+
import frc.robot.constants.FunnelConstants;
16+
17+
public class FunnelIOFX implements FunnelIo{
18+
// Private Objects
19+
private Logger logger;
20+
private TalonFX talonfx;
21+
22+
// FX Acces Objects
23+
TalonFXConfigurator configurator;
24+
StatusSignal<AngularVelocity> curVelocity;
25+
StatusSignal<ReverseLimitValue> curRevLimit;
26+
27+
private DutyCycleOut dutyCycleRequest = new DutyCycleOut(0.0).withEnableFOC(false);
28+
29+
public FunnelIOFX() {
30+
logger = LoggerFactory.getLogger(this.getClass());
31+
talonfx = new TalonFX(FunnelConstants.FunnelFxId);
32+
33+
// Config controller
34+
configurator = talonfx.getConfigurator();
35+
configurator.apply(new TalonFXConfiguration());
36+
configurator.apply(FunnelConstants.getFXConfig());
37+
38+
// Attach status signals
39+
curVelocity = talonfx.getVelocity();
40+
curRevLimit = talonfx.getReverseLimit();
41+
}
42+
43+
@Override
44+
public void setPct(double percentOutput){
45+
talonfx.setControl(dutyCycleRequest.withOutput(percentOutput));
46+
}
47+
48+
@Override
49+
public void updateInputs(FunnelIoInputs inputs) {
50+
inputs.velocity = curVelocity.refresh().getValue();
51+
inputs.revBeamOpen = curRevLimit.refresh().getValue().value == 1;
52+
}
53+
54+
@Override
55+
public void registerWith(TelemetryService telemetryService) {
56+
telemetryService.register(talonfx, true);
57+
}
58+
}

src/main/java/frc/robot/subsystems/funnel/FunnelIo.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,19 @@
33
import org.littletonrobotics.junction.AutoLog;
44
import org.strykeforce.telemetry.TelemetryService;
55

6+
import edu.wpi.first.units.measure.AngularVelocity;
7+
68
public interface FunnelIo {
79

810
@AutoLog
911
public static class FunnelIoInputs{
10-
12+
public AngularVelocity velocity;
13+
// Open = beam isnt broken
14+
public boolean revBeamOpen = false;
1115
}
1216

17+
public default void setPct(double percentOutput) {}
18+
1319
public default void updateInputs(FunnelIoInputs inputs) {}
1420

1521
public default void registerWith(TelemetryService telemetryService) {}

src/main/java/frc/robot/subsystems/funnel/FunnelSubsystem.java

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,53 +2,75 @@
22

33
import java.util.Set;
44

5+
import org.littletonrobotics.junction.Logger;
6+
import org.strykeforce.telemetry.TelemetryService;
57
import org.strykeforce.telemetry.measurable.MeasurableSubsystem;
68
import org.strykeforce.telemetry.measurable.Measure;
79

10+
import frc.robot.constants.FunnelConstants;
811
import frc.robot.standards.OpenLoopSubsystem;
912

1013
public class FunnelSubsystem extends MeasurableSubsystem implements OpenLoopSubsystem{
1114

1215
// Private Variables
1316
private final FunnelIo io;
17+
private float totalBreaks = 0;
1418

15-
public FunnelState curState = FunnelState.Idle;
19+
public FunnelState curState = FunnelState.HasNotSeenCoral;
1620

1721
// Constructor
18-
public FunnelSubsystem(FunnelIo io){
22+
public FunnelSubsystem(FunnelIo io) {
1923
this.io = io;
2024
}
2125

22-
public FunnelState getState(){
26+
// Getter/Setter Methods
27+
public FunnelState getState() {
2328
return curState;
2429
}
2530

2631
@Override
27-
public void periodic(){
32+
public void periodic() {
2833
switch (curState){
29-
case Idle:
34+
case HasSeenCoral:
3035
break;
31-
case PickingUp:
32-
break;
33-
case Held:
36+
case HasNotSeenCoral:
3437
break;
3538
}
39+
40+
// Log Outputs
41+
Logger.recordOutput("Funnel/curState", curState);
42+
Logger.recordOutput("Funnel/totalBreaks", totalBreaks);
43+
}
44+
45+
// Grapher
46+
@Override
47+
public void registerWith(TelemetryService telemetryService) {
48+
io.registerWith(telemetryService);
49+
super.registerWith(telemetryService);
3650
}
3751

3852
@Override
3953
public Set<Measure> getMeasures() {
40-
return null;
54+
return Set.of(new Measure("State", () -> curState.ordinal()));
4155
}
4256

43-
public enum FunnelState{
44-
Idle,
45-
PickingUp,
46-
Held
57+
// State Enum
58+
public enum FunnelState {
59+
HasSeenCoral,
60+
HasNotSeenCoral
4761
}
4862

4963
@Override
5064
public void setPercent(double pct) {
65+
io.setPct(pct);
66+
}
67+
68+
public void StartMotor() {
69+
setPercent(FunnelConstants.kFunnelPercentOutput);
70+
}
5171

72+
public void StopMotor() {
73+
setPercent(0.0);
5274
}
5375

5476
}

0 commit comments

Comments
 (0)