Hello,
I am pretty new to coding and have recently begun working on the autonomous section for our robot. Currently I think the best route would be to create a while statement that runs while a certain variable is true. I am unsure what to make said variable though, as I am unfamiliar with timer features in Java.
I have also heard an encoder would allow me to do a similar thing. I was wondering if anyone had helpful tips or ideas.
Thanks!
(We are using a mecanum drive and I have build a functioning teleop mode)
(Source Code)
package frc.robot;
import edu.wpi.first.wpilibj.TimedRobot;
import edu.wpi.first.wpilibj.smartdashboard.SendableChooser;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.drive.MecanumDrive;
import edu.wpi.first.wpilibj.motorcontrol.PWMVictorSPX;
public class Robot extends TimedRobot {
private static final String kDefaultAuto = "Default";
private static final String kCustomAuto = "My Auto";
private String m_autoSelected;
private final SendableChooser<String> m_chooser = new SendableChooser<>();
private static final int kFrontLeftChannel = 6;
private static final int kFrontRightChannel = 7;
private static final int kRearRightChannel = 8;
private static final int kRearLeftChannel = 9;
private static final int kJoystickChannel = 0;
private MecanumDrive m_robotDrive;
private Joystick m_stick;
@Override
public void robotInit() {
m_chooser.setDefaultOption("Default Auto", kDefaultAuto);
m_chooser.addOption("My Auto", kCustomAuto);
SmartDashboard.putData("Auto choices", m_chooser);
PWMVictorSPX frontLeft = new PWMVictorSPX(kFrontLeftChannel);
PWMVictorSPX reafLeft = new PWMVictorSPX(kRearLeftChannel);
PWMVictorSPX frontRight = new PWMVictorSPX(kFrontRightChannel);
PWMVictorSPX rearRight = new PWMVictorSPX(kRearRightChannel);
m_robotDrive = new MecanumDrive(frontLeft, reafLeft, frontRight, rearRight);
m_stick = new Joystick(kJoystickChannel);
}
@Override
public void robotPeriodic() {
}
@Override
public void autonomousInit() {
m_autoSelected = m_chooser.getSelected();
System.out.println("Auto selected: " + m_autoSelected);
}
@Override
public void autonomousPeriodic() {
switch (m_autoSelected) {
case kCustomAuto:
while( ){
m_robotDrive.driveCartesian(.5, .5,.5, 0.0);
}
break;
case kDefaultAuto:
default:
// Put default auto code here
break;
}
}
@Override
public void teleopInit() {
}
@Override
public void teleopPeriodic() {
double xAxis = m_stick.getRawAxis(0) ;
double yAxis = m_stick.getRawAxis(1);
double zAxis = m_stick.getRawAxis(4);
m_robotDrive.driveCartesian(xAxis, yAxis, zAxis, 0.0);
}
/** This function is called once when the robot is disabled. */
@Override
public void disabledInit() {
}
/** This function is called periodically when disabled. */
@Override
public void disabledPeriodic() {
}
/** This function is called once when test mode is enabled. */
@Override
public void testInit() {
}
/** This function is called periodically during test mode. */
@Override
public void testPeriodic() {
}
}