48 lines
1.5 KiB
Java
48 lines
1.5 KiB
Java
package frc.robot.subsystems;
|
|
|
|
import com.ctre.phoenix6.controls.VoltageOut;
|
|
import com.ctre.phoenix6.hardware.TalonFX;
|
|
|
|
import edu.wpi.first.math.MathUtil;
|
|
import edu.wpi.first.networktables.NetworkTable;
|
|
import edu.wpi.first.networktables.NetworkTableInstance;
|
|
import edu.wpi.first.wpilibj2.command.SubsystemBase;
|
|
import frc.robot.Constants;
|
|
|
|
/**
|
|
* 主 conveyor 的开环控制封装。
|
|
*
|
|
* 本赛季没有球检测传感器,持球状态由 Superstructure 按状态流程推断后
|
|
* 写入这里(INDEXING 完成置位,射击/EJECT 后清空);
|
|
* 所有动作顺序判断都放在 Superstructure。
|
|
*/
|
|
public class ConveyorSubsystem extends SubsystemBase {
|
|
public final TalonFX mainConveyor;
|
|
private final VoltageOut voltageRequest = new VoltageOut(0);
|
|
private final NetworkTable table = NetworkTableInstance.getDefault().getTable("Conveyor");
|
|
|
|
private double voltage = 0.0;
|
|
|
|
public ConveyorSubsystem() {
|
|
mainConveyor = new TalonFX(Constants.Conveyor.mainConveyorID);
|
|
}
|
|
public void feedToShooter() {
|
|
setVoltage(Constants.Conveyor.feedVoltage);
|
|
}
|
|
public void reverse() {
|
|
setVoltage(Constants.Conveyor.reverseVoltage);
|
|
}
|
|
public void stop() {
|
|
setVoltage(0.0);
|
|
}
|
|
public void setVoltage(double volts) {
|
|
mainConveyor.setControl(voltageRequest.withOutput(volts));
|
|
}
|
|
|
|
@Override
|
|
public void periodic() {
|
|
table.getEntry("velocity").setDouble(mainConveyor.getVelocity().getValueAsDouble());
|
|
table.getEntry("hasNote").setBoolean(notePresent);
|
|
}
|
|
}
|