Skip to content

Commit

Permalink
Merge pull request #39 from 2491-NoMythic/timer-for-autos
Browse files Browse the repository at this point in the history
Timer for autos :D
  • Loading branch information
rflood07 authored Feb 2, 2024
2 parents 3ce6c02 + b6b9546 commit 0b3ca9a
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/main/java/frc/robot/RobotContainer.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand All @@ -113,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);
Expand Down Expand Up @@ -302,6 +305,7 @@ private void registerNamedCommands() {
if(intakeExists) {
NamedCommands.registerCommand("intakeOn", new InstantCommand(()-> intake.intakeYes(1)));
}
NamedCommands.registerCommand("wait x seconds", new WaitCommand(Preferences.getDouble("wait # of seconds", 0)));
}

public void teleopPeriodic() {
Expand Down
44 changes: 44 additions & 0 deletions src/main/java/frc/robot/commands/WaitCommand.java
Original file line number Diff line number Diff line change
@@ -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();
}
}

0 comments on commit 0b3ca9a

Please sign in to comment.