Untitled
unknown
java
2 years ago
4.8 kB
17
Indexable
// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package frc.robot;
import edu.wpi.first.wpilibj.Compressor;
import edu.wpi.first.wpilibj.DoubleSolenoid;
import edu.wpi.first.wpilibj.PneumaticsModuleType;
import edu.wpi.first.wpilibj.DoubleSolenoid.Value;
import edu.wpi.first.wpilibj2.command.Command;
import edu.wpi.first.wpilibj2.command.InstantCommand;
import edu.wpi.first.wpilibj2.command.RunCommand;
import edu.wpi.first.wpilibj2.command.button.CommandXboxController;
import frc.robot.Constants.LauncherConstants;
import frc.robot.Constants.OperatorConstants;
import frc.robot.commands.Autos;
import frc.robot.commands.LaunchNote;
import frc.robot.commands.PrepareLaunch;
import frc.robot.subsystems.PWMDrivetrain;
import frc.robot.subsystems.PWMLauncher;
// import frc.robot.subsystems.CANDrivetrain;
// import frc.robot.subsystems.CANLauncher;
/**
* This class is where the bulk of the robot should be declared. Since Command-based is a
* "declarative" paradigm, very little robot logic should actually be handled in the {@link Robot}
* periodic methods (other than the scheduler calls). Instead, the structure of the robot (including
* subsystems, commands, and trigger mappings) should be declared here.
*/
public class RobotContainer {
// The robot's subsystems are defined here.
private final PWMDrivetrain m_drivetrain = new PWMDrivetrain();
// private final CANDrivetrain m_drivetrain = new CANDrivetrain();
private final PWMLauncher m_launcher = new PWMLauncher();
// private final CANLauncher m_launcher = new CANLauncher();
//private final Solenoids solenoids = new Solenoids();
/*The gamepad provided in the KOP shows up like an XBox controller if the mode switch is set to X mode using the
* switch on the top.*/
private final CommandXboxController m_driverController =
new CommandXboxController(OperatorConstants.kDriverControllerPort);
private final CommandXboxController m_operatorController = new CommandXboxController(OperatorConstants.kOperatorControllerPort);
private final Compressor pcmCompressor = new Compressor(PneumaticsModuleType.CTREPCM);
private final DoubleSolenoid leftSolenoid = new DoubleSolenoid(PneumaticsModuleType.CTREPCM, 4, 3);
private final DoubleSolenoid rightSolenoid = new DoubleSolenoid(PneumaticsModuleType.CTREPCM, 7, 1);
/** The container for the robot. Contains subsystems, OI devices, and commands. */
public RobotContainer() {
// Configure the trigger bindings
configureBindings();
}
/**
* Use this method to define your trigger->command mappings. Triggers can be accessed via the
* named factory methods in the Command* classes in edu.wpi.first.wpilibj2.command.button (shown
* below) or via the Trigger constructor for arbitary conditions
*/
private void configureBindings() {
// Set the default command for the drivetrain to drive using the joysticks
m_drivetrain.setDefaultCommand(new RunCommand(() -> m_drivetrain.tankDrive(m_driverController.getLeftY(), m_driverController.getRightY()),m_drivetrain));
/*Create an inline sequence to run when the operator presses and holds the A (green) button. Run the PrepareLaunch
* command for 1 seconds and then run the LaunchNote command */
m_operatorController
.a()
.whileTrue(
new PrepareLaunch(m_launcher)
.withTimeout(LauncherConstants.kLauncherDelay)
.andThen(new LaunchNote(m_launcher))
.handleInterrupt(() -> m_launcher.stop()));
// Set up a binding to run the intake command while the operator is pressing and holding the
// left Bumper
m_operatorController.leftBumper().whileTrue(m_launcher.getIntakeCommand());
m_operatorController.y().onTrue(new InstantCommand(() -> leftSolenoid.set(Value.kForward)));
m_operatorController.y().onTrue(new InstantCommand(() -> rightSolenoid.set(Value.kForward)));
m_operatorController.b().onTrue(new InstantCommand(() -> leftSolenoid.set(Value.kReverse)));
m_operatorController.b().onTrue(new InstantCommand(() -> rightSolenoid.set(Value.kReverse)));
}
/**
* Use this to pass the autonomous command to the main {@link Robot} class.
*
* @return the command to run in autonomous
*/
public Command getAutonomousCommand() {
// An example command will be run in autonomous
//return Autos.drive(m_drivetrain);
return Autos.LaunchNodeDriveAuto(m_launcher,m_drivetrain);
//return Autos.justShootAuto(m_launcher);
}
}
Editor is loading...
Leave a Comment