summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2015-01-13 15:33:41 -0500
committerLuke Shumaker <lukeshu@sbcglobal.net>2015-01-13 15:33:41 -0500
commit5e28068699f8d458f6f104a93b51d174cd065f6e (patch)
treeff427507632c1d6fbb058ad7f57a44e56631b4b7 /src
Initial commit of Command Based Robotorig
Diffstat (limited to 'src')
-rw-r--r--src/org/usfirst/frc/team4272/robot2015/OI.java38
-rw-r--r--src/org/usfirst/frc/team4272/robot2015/Robot.java80
-rw-r--r--src/org/usfirst/frc/team4272/robot2015/RobotMap.java18
-rw-r--r--src/org/usfirst/frc/team4272/robot2015/commands/ExampleCommand.java39
-rw-r--r--src/org/usfirst/frc/team4272/robot2015/subsystems/ExampleSubsystem.java19
5 files changed, 194 insertions, 0 deletions
diff --git a/src/org/usfirst/frc/team4272/robot2015/OI.java b/src/org/usfirst/frc/team4272/robot2015/OI.java
new file mode 100644
index 0000000..b90f86a
--- /dev/null
+++ b/src/org/usfirst/frc/team4272/robot2015/OI.java
@@ -0,0 +1,38 @@
+package org.usfirst.frc.team4272.robot2015;
+
+import edu.wpi.first.wpilibj.buttons.Button;
+import org.usfirst.frc.team4272.robot2015.commands.ExampleCommand;
+
+/**
+ * This class is the glue that binds the controls on the physical operator
+ * interface to the commands and command groups that allow control of the robot.
+ */
+public class OI {
+ //// CREATING BUTTONS
+ // One type of button is a joystick button which is any button on a joystick.
+ // You create one by telling it which joystick it's on and which button
+ // number it is.
+ // Joystick stick = new Joystick(port);
+ // Button button = new JoystickButton(stick, buttonNumber);
+
+ // There are a few additional built in buttons you can use. Additionally,
+ // by subclassing Button you can create custom triggers and bind those to
+ // commands the same as any other Button.
+
+ //// TRIGGERING COMMANDS WITH BUTTONS
+ // Once you have a button, it's trivial to bind it to a button in one of
+ // three ways:
+
+ // Start the command when the button is pressed and let it run the command
+ // until it is finished as determined by it's isFinished method.
+ // button.whenPressed(new ExampleCommand());
+
+ // Run the command while the button is being held down and interrupt it once
+ // the button is released.
+ // button.whileHeld(new ExampleCommand());
+
+ // Start the command when the button is released and let it run the command
+ // until it is finished as determined by it's isFinished method.
+ // button.whenReleased(new ExampleCommand());
+}
+
diff --git a/src/org/usfirst/frc/team4272/robot2015/Robot.java b/src/org/usfirst/frc/team4272/robot2015/Robot.java
new file mode 100644
index 0000000..930ec3f
--- /dev/null
+++ b/src/org/usfirst/frc/team4272/robot2015/Robot.java
@@ -0,0 +1,80 @@
+
+package org.usfirst.frc.team4272.robot2015;
+
+import edu.wpi.first.wpilibj.IterativeRobot;
+import edu.wpi.first.wpilibj.command.Command;
+import edu.wpi.first.wpilibj.command.Scheduler;
+import edu.wpi.first.wpilibj.livewindow.LiveWindow;
+import org.usfirst.frc.team4272.robot2015.commands.ExampleCommand;
+import org.usfirst.frc.team4272.robot2015.subsystems.ExampleSubsystem;
+
+/**
+ * The VM is configured to automatically run this class, and to call the
+ * functions corresponding to each mode, as described in the IterativeRobot
+ * documentation. If you change the name of this class or the package after
+ * creating this project, you must also update the manifest file in the resource
+ * directory.
+ */
+public class Robot extends IterativeRobot {
+
+ public static final ExampleSubsystem exampleSubsystem = new ExampleSubsystem();
+ public static OI oi;
+
+ Command autonomousCommand;
+
+ /**
+ * This function is run when the robot is first started up and should be
+ * used for any initialization code.
+ */
+ public void robotInit() {
+ oi = new OI();
+ // instantiate the command used for the autonomous period
+ autonomousCommand = new ExampleCommand();
+ }
+
+ public void disabledPeriodic() {
+ Scheduler.getInstance().run();
+ }
+
+ public void autonomousInit() {
+ // schedule the autonomous command (example)
+ if (autonomousCommand != null) autonomousCommand.start();
+ }
+
+ /**
+ * This function is called periodically during autonomous
+ */
+ public void autonomousPeriodic() {
+ Scheduler.getInstance().run();
+ }
+
+ public void teleopInit() {
+ // This makes sure that the autonomous stops running when
+ // teleop starts running. If you want the autonomous to
+ // continue until interrupted by another command, remove
+ // this line or comment it out.
+ if (autonomousCommand != null) autonomousCommand.cancel();
+ }
+
+ /**
+ * This function is called when the disabled button is hit.
+ * You can use it to reset subsystems before shutting down.
+ */
+ public void disabledInit(){
+
+ }
+
+ /**
+ * This function is called periodically during operator control
+ */
+ public void teleopPeriodic() {
+ Scheduler.getInstance().run();
+ }
+
+ /**
+ * This function is called periodically during test mode
+ */
+ public void testPeriodic() {
+ LiveWindow.run();
+ }
+}
diff --git a/src/org/usfirst/frc/team4272/robot2015/RobotMap.java b/src/org/usfirst/frc/team4272/robot2015/RobotMap.java
new file mode 100644
index 0000000..2238625
--- /dev/null
+++ b/src/org/usfirst/frc/team4272/robot2015/RobotMap.java
@@ -0,0 +1,18 @@
+package org.usfirst.frc.team4272.robot2015;
+/**
+ * The RobotMap is a mapping from the ports sensors and actuators are wired into
+ * to a variable name. This provides flexibility changing wiring, makes checking
+ * the wiring easier and significantly reduces the number of magic numbers
+ * floating around.
+ */
+public class RobotMap {
+ // For example to map the left and right motors, you could define the
+ // following variables to use with your drivetrain subsystem.
+ // public static int leftMotor = 1;
+ // public static int rightMotor = 2;
+
+ // If you are using multiple modules, make sure to define both the port
+ // number and the module. For example you with a rangefinder:
+ // public static int rangefinderPort = 1;
+ // public static int rangefinderModule = 1;
+}
diff --git a/src/org/usfirst/frc/team4272/robot2015/commands/ExampleCommand.java b/src/org/usfirst/frc/team4272/robot2015/commands/ExampleCommand.java
new file mode 100644
index 0000000..42ddd45
--- /dev/null
+++ b/src/org/usfirst/frc/team4272/robot2015/commands/ExampleCommand.java
@@ -0,0 +1,39 @@
+
+package org.usfirst.frc.team4272.robot2015.commands;
+
+import edu.wpi.first.wpilibj.command.Command;
+
+import org.usfirst.frc.team4272.robot2015.Robot;
+
+/**
+ *
+ */
+public class ExampleCommand extends Command {
+
+ public ExampleCommand() {
+ // Use requires() here to declare subsystem dependencies
+ requires(Robot.exampleSubsystem);
+ }
+
+ // Called just before this Command runs the first time
+ protected void initialize() {
+ }
+
+ // Called repeatedly when this Command is scheduled to run
+ protected void execute() {
+ }
+
+ // Make this return true when this Command no longer needs to run execute()
+ protected boolean isFinished() {
+ return false;
+ }
+
+ // Called once after isFinished returns true
+ protected void end() {
+ }
+
+ // Called when another command which requires one or more of the same
+ // subsystems is scheduled to run
+ protected void interrupted() {
+ }
+}
diff --git a/src/org/usfirst/frc/team4272/robot2015/subsystems/ExampleSubsystem.java b/src/org/usfirst/frc/team4272/robot2015/subsystems/ExampleSubsystem.java
new file mode 100644
index 0000000..5b8ebfb
--- /dev/null
+++ b/src/org/usfirst/frc/team4272/robot2015/subsystems/ExampleSubsystem.java
@@ -0,0 +1,19 @@
+
+package org.usfirst.frc.team4272.robot2015.subsystems;
+
+import edu.wpi.first.wpilibj.command.Subsystem;
+
+/**
+ *
+ */
+public class ExampleSubsystem extends Subsystem {
+
+ // Put methods for controlling this subsystem
+ // here. Call these from Commands.
+
+ public void initDefaultCommand() {
+ // Set the default command for a subsystem here.
+ //setDefaultCommand(new MySpecialCommand());
+ }
+}
+