SimpleDriveΒΆ
SimpleDrive is the command that controls the subsystem output. Commands can be called again and again which makes them perfect for autonomous routines.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | package frc.robot.commands.driveCommands; //WPI imports import edu.wpi.first.wpilibj2.command.CommandBase; //RobotContainer import import frc.robot.RobotContainer; //Subsystem imports import frc.robot.subsystems.DriveTrain; /** * SimpleDrive class * <p> * This class drives a motor at 50% speed until the command is ended */ public class SimpleDrive extends CommandBase { //Grab the subsystem instance from RobotContainer private static final DriveTrain drive = RobotContainer.drive; /** * Constructor */ public SimpleDrive() { addRequirements(drive); // Adds the subsystem to the command } /** * Runs before execute */ @Override public void initialize() { } /** * Called continously until command is ended */ @Override public void execute() { drive.setMotorSpeed(0.5); // Set motor speed to 50% } /** * Called when the command is told to end or is interrupted */ @Override public void end(boolean interrupted) { drive.setMotorSpeed(0.0); // Stop motor } /** * Creates an isFinished condition if needed */ @Override public boolean isFinished() { return false; } } |
Lines
4-10are the imports required.Line
20grabs the instance of theDriveTrainsubsystem defined and instantiated inRobotContainer.Lines
25-28are the constructor.Line
27says that this command requires the subsystemdrivewhich is the handle for the subsystemDriveTrain.Lines
33-37is the initialize section of the command. In this case there is nothing to initialize so it is left blank.Lines
42-46is the execute section of the command. As long as the command is active anything in here will run every robot packet (20ms).Line
45is setting the motor speed to0.5which is equal to50%speed.Lines
51-55is the end section of the command. When the command is scheduled to end or is interrupted this method is called.Line
54sets the motor speed to0.0this will stop the motor. It is a good idea to always add a stop motor instruction here unless its not required.Lines
60-64is the isFinished section of the command. This method can be called to check if the command is finished or not. Useful if you wanted to put a stop condition based on sensor feedback here. For example using the sharp sensor to sence distance and it hits the threshold.