Untitled
unknown
java
7 months ago
4.8 kB
7
Indexable
Never
// 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); } }
Leave a Comment