mirror of
https://github.com/BroncBotz3481/YAGSL
synced 2026-06-19 06:21:40 +00:00
86 lines
1.9 KiB
Java
86 lines
1.9 KiB
Java
package frc.robot.subsystems.swervedrive2.swervelib.encoders;
|
|
|
|
import com.revrobotics.AbsoluteEncoder;
|
|
import com.revrobotics.CANSparkMax;
|
|
import com.revrobotics.SparkMaxAbsoluteEncoder.Type;
|
|
import frc.robot.subsystems.swervedrive2.swervelib.motors.SwerveMotor;
|
|
|
|
/**
|
|
* SparkMax absolute encoder, attached through the data port.
|
|
*/
|
|
public class SparkMaxEncoderSwerve extends SwerveAbsoluteEncoder
|
|
{
|
|
|
|
/**
|
|
* The {@link AbsoluteEncoder} representing the duty cycle encoder attached to the SparkMax.
|
|
*/
|
|
public AbsoluteEncoder encoder;
|
|
|
|
/**
|
|
* Create the {@link AbsoluteEncoder} object as a duty cycle. from the {@link CANSparkMax} motor.
|
|
*
|
|
* @param motor Motor to create the encoder from.
|
|
*/
|
|
public SparkMaxEncoderSwerve(SwerveMotor motor)
|
|
{
|
|
if (motor.getMotor() instanceof CANSparkMax)
|
|
{
|
|
encoder = ((CANSparkMax) motor.getMotor()).getAbsoluteEncoder(Type.kDutyCycle);
|
|
} else
|
|
{
|
|
throw new RuntimeException("Motor given to instantiate SparkMaxEncoder is not a CANSparkMax");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Reset the encoder to factory defaults.
|
|
*/
|
|
@Override
|
|
public void factoryDefault()
|
|
{
|
|
// Do nothing
|
|
}
|
|
|
|
/**
|
|
* Clear sticky faults on the encoder.
|
|
*/
|
|
@Override
|
|
public void clearStickyFaults()
|
|
{
|
|
// Do nothing
|
|
}
|
|
|
|
/**
|
|
* Configure the absolute encoder to read from [0, 360) per second.
|
|
*
|
|
* @param inverted Whether the encoder is inverted.
|
|
*/
|
|
@Override
|
|
public void configure(boolean inverted)
|
|
{
|
|
encoder.setInverted(inverted);
|
|
}
|
|
|
|
/**
|
|
* Get the absolute position of the encoder.
|
|
*
|
|
* @return Absolute position in degrees from [0, 360).
|
|
*/
|
|
@Override
|
|
public double getAbsolutePosition()
|
|
{
|
|
return encoder.getPosition();
|
|
}
|
|
|
|
/**
|
|
* Get the instantiated absolute encoder Object.
|
|
*
|
|
* @return Absolute encoder object.
|
|
*/
|
|
@Override
|
|
public Object getAbsoluteEncoder()
|
|
{
|
|
return encoder;
|
|
}
|
|
}
|