|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#1
|
|||
|
|||
|
Code:
/*----------------------------------------------------------------------------*/
/* 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.*;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.RobotDrive;
import edu.wpi.first.wpilibj.SimpleRobot;
import edu.wpi.first.wpilibj.Timer;
/**
* 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 Team1605 extends SimpleRobot {
Joystick stickDriverLeft = new Joystick(1);
Joystick stickDriverRight = new Joystick(2);
Jaguar leftMotor = new Jaguar(2);
Jaguar rightMotor = new Jaguar(1);
Victor shooterMotor = new Victor(3);
Victor gatherMotor1 = new Victor(4);
Victor bridgeHandMotor = new Victor(6);
RobotDrive robotDrive = new RobotDrive(leftMotor,rightMotor);
/**
* This function is called once each time the robot enters autonomous mode.
*/
public void autonomous() {
robotDrive.drive(0.5,0.0);//drive at 50% speed 0% turn
Timer.delay(5.0);//wait 5 seconds
//robotDrive.drive(0.0,0.0);//stop
//Timer.delay(10.0);// wait 10 seconds
//leftMotor.set(-1);
//yrightMotor.set(1);
//Timer.delay(15);
//leftMotor.set(0);
//rightMotor.set(0);
//Timer.delay(3);
}
/**
* This function is called once each time the robot enters operator control.
*/
public void operatorControl() {
while(isOperatorControl() && isEnabled())
{
robotDrive.tankDrive(stickDriverLeft.getAxis(Joystick.AxisType.kY), stickDriverRight.getAxis(Joystick.AxisType.kY));
if(stickDriverRight.getButton(Joystick.ButtonType.kTrigger)) {
shooterMotor.set(1);
}
else {
shooterMotor.set(0);
}
if(stickDriverLeft.getButton(Joystick.ButtonType.kTrigger)) {
gatherMotor1.set(-1);
}
else {
gatherMotor1.set(0);
}
bridgeHandMotor.set(stickDriverLeft.getAxis(Joystick.AxisType.kY));
Timer.delay(.01);
}
}
}
|
|
#2
|
|||
|
|||
|
Re: Autonomous
Quote:
Your autonomous function should look like Code:
public void autonomous() {
while(isAutonomous()){ //Place everything in a loop.
robotDrive.drive(0.5,0.0);//drive at 50% speed 0% turn
Timer.delay(5.0);//wait 5 seconds
}
|
|
#3
|
||||
|
||||
|
Re: Autonomous
Quote:
Try the following instead: Code:
public void autonomous() {
robotDrive.setSafetyEnabled(false);
robotDrive.drive(0.5,0.0);//drive at 50% speed 0% turn
Timer.delay(5.0);//wait 5 seconds
}
Last edited by NWChen : 18-02-2014 at 22:40. |
|
#4
|
||||
|
||||
|
Re: Autonomous
Another option would be to use the system clock:
We used similar code on an alliance partner's robot at week 0 and it worked flawlessly. Code:
public void autonomous() {
long startTime = System.currentTimeMills();
while(isAutonomous()){ //Place everything in a loop.
long timePassed = System.currentTimeMills() - startTime;
if(timePassed < 5000){
//in the first 5 seconds of auto
robotDrive.drive(0.1,0.0);
}else {
robotDrive.drive(0,0.0);
}
Timer.delay(.05);
}
Also you'll noticed I chanced the speed to .01, you only need to cross the line, so I would slowly increment the speed until it matches your needs. Driving at half speed for 5 seconds could have some unintended consequences. Last edited by mwtidd : 18-02-2014 at 22:54. |
|
#5
|
||||
|
||||
|
Re: Autonomous
It's important to actually tell your motors to stop after commanding the drivetrain to move forward for 5 seconds. Otherwise your code will go on its merry way, but the drivetrain will continue to be commanded.
Regardless of how you end up implementing the code you need to explicitly command the motors to 0. lineskier's code does this: Code:
robotDrive.drive(0.0, 0.0); |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|