Adding SparkMaxIO
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
package com.team2648.iocore.commons;
|
package com.team2648.iocore.commons;
|
||||||
|
|
||||||
|
import com.revrobotics.spark.config.SparkMaxConfig;
|
||||||
|
|
||||||
public class CommonMotorControllerConfig {
|
public class CommonMotorControllerConfig {
|
||||||
private boolean isInverted;
|
private boolean isInverted;
|
||||||
|
|
||||||
@@ -16,4 +18,11 @@ public class CommonMotorControllerConfig {
|
|||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public SparkMaxConfig getAsSparkMaxConfig() {
|
||||||
|
// TODO More config
|
||||||
|
SparkMaxConfig config = new SparkMaxConfig();
|
||||||
|
config.inverted(isInverted);
|
||||||
|
return config;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
84
src/main/java/com/team2648/iocore/realio/SparkMaxIO.java
Normal file
84
src/main/java/com/team2648/iocore/realio/SparkMaxIO.java
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
package com.team2648.iocore.realio;
|
||||||
|
|
||||||
|
import com.revrobotics.PersistMode;
|
||||||
|
import com.revrobotics.ResetMode;
|
||||||
|
import com.revrobotics.spark.SparkMax;
|
||||||
|
import com.revrobotics.spark.SparkBase.ControlType;
|
||||||
|
import com.revrobotics.spark.SparkLowLevel.MotorType;
|
||||||
|
import com.team2648.iocore.abstracts.EncoderIO;
|
||||||
|
import com.team2648.iocore.abstracts.MotorControllerIO;
|
||||||
|
import com.team2648.iocore.commons.CommonMotorControllerConfig;
|
||||||
|
import com.team2648.iocore.enums.MotorControllerEncoderType;
|
||||||
|
|
||||||
|
import edu.wpi.first.wpilibj.RobotController;
|
||||||
|
|
||||||
|
public class SparkMaxIO extends MotorControllerIO {
|
||||||
|
private SparkMax motor;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public SparkMaxIO(String name, int canID, MotorType type) {
|
||||||
|
super(
|
||||||
|
"/SparkMax/" + name,
|
||||||
|
ControlTypes.kDutyCycle,
|
||||||
|
ControlTypes.kPIDPosition,
|
||||||
|
ControlTypes.kPIDVelocity
|
||||||
|
);
|
||||||
|
|
||||||
|
motor = new SparkMax(canID, type);
|
||||||
|
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getOutputVoltage() {
|
||||||
|
return motor.getAppliedOutput() * RobotController.getBatteryVoltage();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void applyConfig(CommonMotorControllerConfig config) {
|
||||||
|
motor.configure(
|
||||||
|
config.getAsSparkMaxConfig(),
|
||||||
|
ResetMode.kResetSafeParameters,
|
||||||
|
PersistMode.kPersistParameters
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run(ControlTypes type, double controlValue) {
|
||||||
|
switch (type) {
|
||||||
|
case kDutyCycle:
|
||||||
|
motor.set(controlValue);
|
||||||
|
break;
|
||||||
|
case kPIDPosition:
|
||||||
|
motor.getClosedLoopController().setSetpoint(
|
||||||
|
controlValue,
|
||||||
|
ControlType.kPosition
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case kPIDVelocity:
|
||||||
|
motor.getClosedLoopController().setSetpoint(
|
||||||
|
controlValue,
|
||||||
|
ControlType.kVelocity
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new UnsupportedOperationException("SparkMaxIO does not support ControlType " + type.name());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EncoderIO getEncoder(MotorControllerEncoderType type) {
|
||||||
|
switch(type) {
|
||||||
|
case kInternal:
|
||||||
|
return new REVLIBRelativeEncoderIO(name, motor.getEncoder());
|
||||||
|
case kAbsolute:
|
||||||
|
return new REVLIBAbsoluteEncoderIO(name, motor.getAbsoluteEncoder());
|
||||||
|
case kExternal:
|
||||||
|
return new REVLIBRelativeEncoderIO(name, motor.getAlternateEncoder());
|
||||||
|
default:
|
||||||
|
throw new UnsupportedOperationException("SparkMaxIO does not support MotorControllerEncoderType " + type.name());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -14,7 +14,7 @@ public class VictorSPIO extends MotorControllerIO implements PWMFollowableMotor{
|
|||||||
private VictorSP motor;
|
private VictorSP motor;
|
||||||
|
|
||||||
public VictorSPIO(String motorName, int pwmPort) {
|
public VictorSPIO(String motorName, int pwmPort) {
|
||||||
super("/" + motorName, ControlTypes.kDutyCycle);
|
super("/VictorSP/" + motorName, ControlTypes.kDutyCycle);
|
||||||
|
|
||||||
motor = new VictorSP(pwmPort);
|
motor = new VictorSP(pwmPort);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user