各馬達控制
Victor SPX Talon SRX SparkMAX
馬達控制器種類
一般馬達普遍使用Victor SPX
NEO使用SparkMAX
Falcon 500內建Talon FX與Talon SRX寫法幾乎相同








Victor SPX
宣告
//Port填入馬達腳位
private VictorSPX MotorController = new VictorSPX(Port);
初始化
//恢復出廠設定
MotorController.configFactoryDefault();
//設定加速時間(從靜止到最高速)(單位:s)
MotorController.configOpenloopRamp(kMotorRampRate);
//設定馬達停止模式(Brake/Coast)(煞車/滑行)
MotorController.setNeutralMode(NeutralMode.Brake);
//設定反轉值(旋轉方向是否反轉)(Reversed填入true/false)
MotorController.setInverted(Reversed);
輸出
//Speed填入百分比輸出(0~1)(ControlMode還有很多模式以後再教)
MotorController.set(ControlMode.PercentOutput, Speed);
Talon SRX/FX
宣告
//Port填入馬達腳位
//TalonFX
private TalonFX MotorController = new TalonFX(Port);
//TalonSRX
private TalonSRX MotorController = new TalonSRX(Port)
初始化
//恢復出廠設定
MotorController.configFactoryDefault();
//設定加速時間(從靜止到最高速)(單位:s)
MotorController.configOpenloopRamp(kMotorRampRate);
//設定馬達停止模式(Brake/Coast)(煞車/滑行)
MotorController.setNeutralMode(NeutralMode.Brake);
//設定反轉值(旋轉方向是否反轉)(Reversed填入true/false)
MotorController.setInverted(Reversed);
輸出
//Speed填入百分比輸出(0~1)(ControlMode還有很多模式以後再教)
MotorController.set(ControlMode.PercentOutput, Speed);
SparkMAX
宣告
//Port填入馬達腳位 因為NEO是無刷馬達 所以MotorType選kBrushless
private CANSparkMax MotorController = new CANSparkMax(PortID, MotorType.kBrushless);
初始化
//恢復出廠設定
MotorController.restoreFactoryDefaults();
//設定加速時間(從靜止到最高速)(單位:s)
MotorController.setOpenLoopRampRate(kMotorRampRate);
//設定馬達停止模式(kBrake/kCoast)(煞車/滑行)
MotorController.setIdleMode(IdleMode.kBrake);
//設定反轉值(旋轉方向是否反轉)(Reversed填入true/false)
MotorController.setInverted(Reversed);
輸出
//Speed填入百分比輸出(0~1)
MotorController.set(Speed);
要求
- 引入函示庫
- 在四個子系統各別宣告一顆馬達,初始化並在setSpeed(double speed)內輸出
- 在Constants.java內,利用enum列舉出各馬達的腳位與反轉值(腳位隨便設,不要重複就好,反轉值都設true)
模板
package frc.robot.subsystems;
import edu.wpi.first.wpilibj2.command.SubsystemBase;
public class VictorSpxSubsystem extends SubsystemBase{
public VictorSpxSubsystem(){
}
public void setSpeed(double speed) {
}
}
範例
package frc.robot.subsystems;
import com.ctre.phoenix.motorcontrol.ControlMode;
import com.ctre.phoenix.motorcontrol.NeutralMode;
import com.ctre.phoenix.motorcontrol.can.VictorSPX;
import edu.wpi.first.wpilibj2.command.SubsystemBase;
import frc.robot.Constants.PortID;
public class VictorSpxSubsystem extends SubsystemBase{
//Port填入馬達腳位
private VictorSPX MotorController = new VictorSPX(PortID.VictorSpx.value);
public VictorSpxSubsystem(){
//恢復出廠設定
MotorController.configFactoryDefault();
//設定加速時間(從靜止到最高速)(單位:s)
MotorController.configOpenloopRamp(0.5);
//設定馬達停止模式(Brake/Coast)(煞車/滑行)
MotorController.setNeutralMode(NeutralMode.Brake);
//設定反轉值(旋轉方向是否反轉)(Reversed填入true/false)
MotorController.setInverted(PortID.VictorSpx.reversed);
}
public void setSpeed(double speed) {
//Speed填入百分比輸出(0~1)(ControlMode還有很多模式以後再教)
MotorController.set(ControlMode.PercentOutput, speed);
}
}
繳交方式
4個子系統(作業1 作業名:子系統)、Constants.java(作業2 作業名:Constants.java)、vendordeps(作業3 作業名:vendordeps)
上傳google表單(四個子系統一起上傳在同一份作業、vendordeps內的所有函示庫也是)
馬達控制
By team7497
馬達控制
- 149