From 37acb04fe8594ab4168ef04067cea977e32cd252 Mon Sep 17 00:00:00 2001 From: Rowan Flood <121908273+rflood07@users.noreply.github.com> Date: Thu, 1 Feb 2024 18:13:11 -0600 Subject: [PATCH 1/2] added WaitCommand and registered it in RobotContainer --- src/main/java/frc/robot/RobotContainer.java | 4 ++ .../java/frc/robot/commands/WaitCommand.java | 44 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 src/main/java/frc/robot/commands/WaitCommand.java diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index 6c34c5ff..ed7ebb80 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -59,6 +59,7 @@ import edu.wpi.first.wpilibj2.command.InstantCommand; import edu.wpi.first.wpilibj2.command.ParallelCommandGroup; import edu.wpi.first.wpilibj2.command.RunCommand; +import edu.wpi.first.wpilibj2.command.WaitCommand; import edu.wpi.first.wpilibj2.command.button.CommandXboxController; import edu.wpi.first.wpilibj2.command.button.Trigger; import edu.wpi.first.wpilibj.Preferences; @@ -91,6 +92,7 @@ public class RobotContainer { private final boolean climberExists = Preferences.getBoolean("Climber", true); private final boolean lightsExist = Preferences.getBoolean("Lights", true); private final boolean indexerExists = Preferences.getBoolean("Indexer", true); + private final boolean autosExist = Preferences.getBoolean("Autos", true); private final boolean useDetectorLimelight = Preferences.getBoolean("Detector Limelight", true); private DrivetrainSubsystem driveTrain; @@ -302,6 +304,8 @@ private void registerNamedCommands() { if(intakeExists) { NamedCommands.registerCommand("intakeOn", new InstantCommand(()-> intake.intakeYes(1))); } + NamedCommands.registerCommand("wait x seconds", new WaitCommand(SmartDashboard.getNumber("wait # of seconds", 0))); + } public void teleopPeriodic() { diff --git a/src/main/java/frc/robot/commands/WaitCommand.java b/src/main/java/frc/robot/commands/WaitCommand.java new file mode 100644 index 00000000..859a1a34 --- /dev/null +++ b/src/main/java/frc/robot/commands/WaitCommand.java @@ -0,0 +1,44 @@ +// 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.commands; + +import java.util.function.DoubleSupplier; + +import edu.wpi.first.wpilibj.Timer; +import edu.wpi.first.wpilibj2.command.Command; + +public class WaitCommand extends Command { + /** Creates a new WaitCommand. */ + DoubleSupplier m_waitTime; + Timer m_timer; + + + public WaitCommand(DoubleSupplier waitTime) { + // Use addRequirements() here to declare subsystem dependencies. + m_waitTime = waitTime; + } + + // Called when the command is initially scheduled. + @Override + public void initialize() { + m_timer.start(); + } + + // Called every time the scheduler runs while the command is scheduled. + @Override + public void execute() {} + + // Called once the command ends or is interrupted. + @Override + public void end(boolean interrupted) { + m_timer.stop(); + } + + // Returns true when the command should end. + @Override + public boolean isFinished() { + return m_timer.get() >= m_waitTime.getAsDouble(); + } +} From b6b95468b59adf0b88a22f47aa56117cfbd7bfdb Mon Sep 17 00:00:00 2001 From: Rowan Flood <121908273+rflood07@users.noreply.github.com> Date: Thu, 1 Feb 2024 19:05:44 -0600 Subject: [PATCH 2/2] changed wait time be a preference value --- src/main/java/frc/robot/RobotContainer.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index ed7ebb80..76e624dc 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -115,13 +115,14 @@ public class RobotContainer { /** The container for the robot. Contains subsystems, OI devices, and commands. */ public RobotContainer() { -//preferences are initialized IF they don't already exist on the Rio + //preferences are initialized IF they don't already exist on the Rio Preferences.initBoolean("Intake", false); Preferences.initBoolean("Climber", false); Preferences.initBoolean("Shooter", false); Preferences.initBoolean("Lights", false); Preferences.initBoolean("Indexer", false); Preferences.initBoolean("Detector Limelight", false); + Preferences.initDouble("wait # of seconds", 0); driverController = new PS4Controller(DRIVE_CONTROLLER_ID); operatorController = new PS4Controller(OPERATOR_CONTROLLER_ID); @@ -304,8 +305,7 @@ private void registerNamedCommands() { if(intakeExists) { NamedCommands.registerCommand("intakeOn", new InstantCommand(()-> intake.intakeYes(1))); } - NamedCommands.registerCommand("wait x seconds", new WaitCommand(SmartDashboard.getNumber("wait # of seconds", 0))); - + NamedCommands.registerCommand("wait x seconds", new WaitCommand(Preferences.getDouble("wait # of seconds", 0))); } public void teleopPeriodic() {