Garten Haeska
24-02-2011, 19:49
Here is a copy of my code.
Please comment on it! I know i could just do the import "*" thing but i chose not to for future references!
If you have any questions please ask, but otherwise my comments in the code seem pretty straight forward!
/*----------------------------------------------------------------------------*/
/* Copyright (c) FIRST 2008. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/
package edu.wpi.first.wpilibj.templates;
import edu.wpi.first.wpilibj.SimpleRobot;//imports the robot template.
import edu.wpi.first.wpilibj.camera.AxisCamera;//imports camera.
import edu.wpi.first.wpilibj.Joystick;//imports the controller.
import edu.wpi.first.wpilibj.Timer;//imports the timer.
import edu.wpi.first.wpilibj.RobotDrive;//imports the drive.
import edu.wpi.first.wpilibj.Watchdog;//imports the safety timer.
import edu.wpi.first.wpilibj.Jaguar;//imports the arm jaguar.
import edu.wpi.first.wpilibj.DoubleSolenoid;//imporst the solenoids used on the robot.
import edu.wpi.first.wpilibj.Compressor;//imports compressor.
/**
* The VM is configured to automatically run this class, and to call the
* functions corresponding to each mode, as described in the SimpleRobot
* 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 RobotTemplate extends SimpleRobot {
RobotDrive drive = new RobotDrive(1,2); // drives the robot around; no jaguars needed to control unless specified.
RobotDrive Arm = new RobotDrive(3,0);
Joystick leftStick = new Joystick(1); // this is our game controller: can be anything that has a joystick.
Timer timer = new Timer(); // Just a timer.
Watchdog Fluffy = Watchdog.getInstance(); // safety timer.
AxisCamera Cam = AxisCamera.getInstance(); // shows image on dashboard.
Compressor comp = new Compressor(1,1); // compressor is pluged in digital I/O port 1, analog port 1.
DoubleSolenoid grab = new DoubleSolenoid(1,2); // this is the solenoid that controls our manipulator.
DoubleSolenoid deployM = new DoubleSolenoid(3,4);//This is the solenoid that controls our deploment.
Jaguar arm = new Jaguar(3); // speed controller that controlls our arm hence the "arm" for the name.
/**
* This function is called once each time the robot enters autonomous mode.
*/
public void autonomous() {
while(isAutonomous()) {
comp.start();
{
timer.start(); // Timer starts
while(timer.get() < 4) { //while the timer is less than 3 sec. the arm will turn.
Arm.drive(.75,0);//arm moves towards peg from starting configuration.
timer.stop(); // stops the timer after 3 seconds.
}
Arm.drive(0,0);//Stops the arm so it doesnt kill anyone
{
timer.reset();// the timer resets it self.
timer.start();//the timer starts again.
while(timer.get()<4) {//while the timer is less than 4 sec. the robot will drive.
drive.drive(.3,0); // robot drives forward at 30% speed and 0% turn.
timer.stop();//stops the arm from moving after the 4 seconds is up
}
drive.drive(0,0);//stops the robot so it doesn't kill anyone.
{
grab.set(DoubleSolenoid.Value.kForward);// solenoid for the manipulator extends until let go.
}
{drive.drive(-.15,0);//drives backwards at 15% speed, zero turn so that we can get closer to our feeder station
}
}
}
comp.stop();
}
}
/**
* This function is called once each time the robot enters operator control.
*/
public void operatorControl()
{
comp.start(); // our compressor starts.
AxisCamera.getInstance();// the axis camera shows in dashboard not sure if we need this .
Fluffy.setExpiration(5.0); // safety timer is set to call every 5 seconds.
while (isOperatorControl () && isEnabled())// operator control is enabled.
{
Fluffy.feed();// feed safety timer.
drive.arcadeDrive(leftStick);//Drive the robot with the left thumbstick on the game controller or the left joystick if using two.
Fluffy.feed();// feed safety timer.
if (leftStick.getRawButton(5))
{
arm.set(.5);// when we press button 5 our arm goes up at 50% speed.
}
else if (leftStick.getRawButton(6))
{
arm.set(-.5);//arm goes toward the ground at 50% speed when we press button 6. though it doesnt seem to do it.
}
else
{
arm.set(0);// arm doesnt do anything when we dont press a button.
if(leftStick.getRawButton(7))
{
arm.set(1);// arm goes away from the ground at 100% speed when we press button 7.
}
else if (leftStick.getRawButton(8))
{
arm.set(-1);// arm goes towards the ground at 100% speed when we press button 8.
}
else
{
arm.set(0);// arm doesnt do anything
if(leftStick.getRawButton(2))
{
Fluffy.feed();// feed safety timer.
grab.set(DoubleSolenoid.Value.kForward);// solenoid for the manipulator extends until let go.
Fluffy.feed();// feed safety timer.
}
else
{
Fluffy.feed();// feed safety timer.
grab.set(DoubleSolenoid.Value.kReverse);// solenoid for the manipulator retracts.
Fluffy.feed();// feed safety timer.
if (leftStick.getRawButton(10))
{
Fluffy.feed();// feed safety timer.
deployM.set(DoubleSolenoid.Value.kForward);
Fluffy.feed();// feed safety timer.
}
else
{
Fluffy.feed();//feed safety timer.
deployM.set(DoubleSolenoid.Value.kReverse);
Fluffy.feed();//feed safety timer.
}
}
Timer.delay(.005);// call to check for a button being pressed every 5 milliseconds!
}
comp.stop();// compressor stops.
}
}
}
}
Please comment on it! I know i could just do the import "*" thing but i chose not to for future references!
If you have any questions please ask, but otherwise my comments in the code seem pretty straight forward!
/*----------------------------------------------------------------------------*/
/* Copyright (c) FIRST 2008. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/
package edu.wpi.first.wpilibj.templates;
import edu.wpi.first.wpilibj.SimpleRobot;//imports the robot template.
import edu.wpi.first.wpilibj.camera.AxisCamera;//imports camera.
import edu.wpi.first.wpilibj.Joystick;//imports the controller.
import edu.wpi.first.wpilibj.Timer;//imports the timer.
import edu.wpi.first.wpilibj.RobotDrive;//imports the drive.
import edu.wpi.first.wpilibj.Watchdog;//imports the safety timer.
import edu.wpi.first.wpilibj.Jaguar;//imports the arm jaguar.
import edu.wpi.first.wpilibj.DoubleSolenoid;//imporst the solenoids used on the robot.
import edu.wpi.first.wpilibj.Compressor;//imports compressor.
/**
* The VM is configured to automatically run this class, and to call the
* functions corresponding to each mode, as described in the SimpleRobot
* 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 RobotTemplate extends SimpleRobot {
RobotDrive drive = new RobotDrive(1,2); // drives the robot around; no jaguars needed to control unless specified.
RobotDrive Arm = new RobotDrive(3,0);
Joystick leftStick = new Joystick(1); // this is our game controller: can be anything that has a joystick.
Timer timer = new Timer(); // Just a timer.
Watchdog Fluffy = Watchdog.getInstance(); // safety timer.
AxisCamera Cam = AxisCamera.getInstance(); // shows image on dashboard.
Compressor comp = new Compressor(1,1); // compressor is pluged in digital I/O port 1, analog port 1.
DoubleSolenoid grab = new DoubleSolenoid(1,2); // this is the solenoid that controls our manipulator.
DoubleSolenoid deployM = new DoubleSolenoid(3,4);//This is the solenoid that controls our deploment.
Jaguar arm = new Jaguar(3); // speed controller that controlls our arm hence the "arm" for the name.
/**
* This function is called once each time the robot enters autonomous mode.
*/
public void autonomous() {
while(isAutonomous()) {
comp.start();
{
timer.start(); // Timer starts
while(timer.get() < 4) { //while the timer is less than 3 sec. the arm will turn.
Arm.drive(.75,0);//arm moves towards peg from starting configuration.
timer.stop(); // stops the timer after 3 seconds.
}
Arm.drive(0,0);//Stops the arm so it doesnt kill anyone
{
timer.reset();// the timer resets it self.
timer.start();//the timer starts again.
while(timer.get()<4) {//while the timer is less than 4 sec. the robot will drive.
drive.drive(.3,0); // robot drives forward at 30% speed and 0% turn.
timer.stop();//stops the arm from moving after the 4 seconds is up
}
drive.drive(0,0);//stops the robot so it doesn't kill anyone.
{
grab.set(DoubleSolenoid.Value.kForward);// solenoid for the manipulator extends until let go.
}
{drive.drive(-.15,0);//drives backwards at 15% speed, zero turn so that we can get closer to our feeder station
}
}
}
comp.stop();
}
}
/**
* This function is called once each time the robot enters operator control.
*/
public void operatorControl()
{
comp.start(); // our compressor starts.
AxisCamera.getInstance();// the axis camera shows in dashboard not sure if we need this .
Fluffy.setExpiration(5.0); // safety timer is set to call every 5 seconds.
while (isOperatorControl () && isEnabled())// operator control is enabled.
{
Fluffy.feed();// feed safety timer.
drive.arcadeDrive(leftStick);//Drive the robot with the left thumbstick on the game controller or the left joystick if using two.
Fluffy.feed();// feed safety timer.
if (leftStick.getRawButton(5))
{
arm.set(.5);// when we press button 5 our arm goes up at 50% speed.
}
else if (leftStick.getRawButton(6))
{
arm.set(-.5);//arm goes toward the ground at 50% speed when we press button 6. though it doesnt seem to do it.
}
else
{
arm.set(0);// arm doesnt do anything when we dont press a button.
if(leftStick.getRawButton(7))
{
arm.set(1);// arm goes away from the ground at 100% speed when we press button 7.
}
else if (leftStick.getRawButton(8))
{
arm.set(-1);// arm goes towards the ground at 100% speed when we press button 8.
}
else
{
arm.set(0);// arm doesnt do anything
if(leftStick.getRawButton(2))
{
Fluffy.feed();// feed safety timer.
grab.set(DoubleSolenoid.Value.kForward);// solenoid for the manipulator extends until let go.
Fluffy.feed();// feed safety timer.
}
else
{
Fluffy.feed();// feed safety timer.
grab.set(DoubleSolenoid.Value.kReverse);// solenoid for the manipulator retracts.
Fluffy.feed();// feed safety timer.
if (leftStick.getRawButton(10))
{
Fluffy.feed();// feed safety timer.
deployM.set(DoubleSolenoid.Value.kForward);
Fluffy.feed();// feed safety timer.
}
else
{
Fluffy.feed();//feed safety timer.
deployM.set(DoubleSolenoid.Value.kReverse);
Fluffy.feed();//feed safety timer.
}
}
Timer.delay(.005);// call to check for a button being pressed every 5 milliseconds!
}
comp.stop();// compressor stops.
}
}
}
}