Lesafian
07-02-2016, 15:05
Our team is using 2 CIM motors using Victor speed controllers. Here's the code that I've written.
package org.usfirst.frc.team6077.robot;
import edu.wpi.first.wpilibj.SampleRobot;
import edu.wpi.first.wpilibj.Solenoid;
import edu.wpi.first.wpilibj.TalonSRX;
import edu.wpi.first.wpilibj.Victor;
import edu.wpi.first.wpilibj.command.Scheduler;
import edu.wpi.first.wpilibj.livewindow.LiveWindow;
import edu.wpi.first.wpilibj.RobotDrive;
import edu.wpi.first.wpilibj.Compressor;
import edu.wpi.first.wpilibj.DoubleSolenoid;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.smartdashboard.SendableChoos er;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboar d;
public class Robot extends SampleRobot {
// RobotDrive Declaration
RobotDrive drive;
// Compressor Declaration
Compressor compressor;
// Solenoid Declaration
DoubleSolenoid doublesolenoid;
Solenoid solenoid;
// Joystick Declaration
Joystick xboxController;
// Motor Controller Declaration
TalonSRX armMotor;
TalonSRX slideMotor;
Victor drivemotor1;
Victor drivemotor2;
// Autonomous Names
final String defaultAuto = "Default";
final String customAuto = "Autonomous Choice 1";
final String customAuto2 = "Autonomous Choice 2";
final String customAuto3 = "Autonomous Choice 3";
final String customAuto4 = "Autonomous Choice 4";
final String customAuto5 = "Autonomous Choice 5";
// Chooser
SendableChooser chooser;
public Robot() {
//Change values later
drivemotor1 = new Victor(0);
drivemotor2 = new Victor(2);
compressor = new Compressor(0);
drive = new RobotDrive(drivemotor1, drivemotor2);
drive.setExpiration(0.1);
xboxController = new Joystick(0);
armMotor = new TalonSRX(5);
slideMotor = new TalonSRX(4);
doublesolenoid = new DoubleSolenoid(0, 1);
solenoid = new Solenoid(2);
chooser = new SendableChooser();
LiveWindow.addActuator("Drive", "Left Motor", drivemotor1);
LiveWindow.addActuator("Drive", "Right Motor", drivemotor2);
}
public void robotInit() {
compressor.start();
compressor.setClosedLoopControl(true);
chooser.addDefault("Default Auto", defaultAuto);
chooser.addObject("Autonomous Choice 1", customAuto);
chooser.addObject("Autonomous Choice 2", customAuto2);
chooser.addObject("Autonomous Choice 3", customAuto3);
chooser.addObject("Autonomous Choice 4", customAuto4);
chooser.addObject("Autonomous Choice 5", customAuto5);
SmartDashboard.putData("Autonomous Chooser", chooser);
}
public void autonomous() {
drive.setSafetyEnabled(false);
String autoSelected = (String) chooser.getSelected();
System.out.println("Autonomous Mode selected: " + autoSelected);
switch (autoSelected) {
case customAuto5:
break;
case customAuto4:
break;
case customAuto3:
break;
case customAuto2:
break;
case customAuto:
break;
case defaultAuto:
default:
break;
}
Scheduler.getInstance().run();
}
public void operatorControl() {
drive.setSafetyEnabled(false);
while (isOperatorControl() && isEnabled()) {
// Move robot using left and right joystick
drive.tankDrive(xboxController.getRawAxis(0), xboxController.getRawAxis(5));
// Lift and lower the arms using the right and left bumper.
if (xboxController.getRawButton(5)) {
armMotor.set(1);
} else if (xboxController.getRawButton(4)) {
armMotor.set(-1);
} else {
armMotor.set(0);
}
// Move sliding mechanism forwards and backwardss
if (Math.abs(xboxController.getRawAxis(5)) > .1) {
slideMotor.set(xboxController.getRawAxis(5));
} else {
slideMotor.set(0);
}
// Open and close the claw
if (xboxController.getRawButton(2)) {
doublesolenoid.set(DoubleSolenoid.Value.kForward);
} else if (xboxController.getRawButton(1)) {
doublesolenoid.set(DoubleSolenoid.Value.kReverse);
}
}
}
public void test() {
}
There are 0 errors in eclipse, and it builds successfully. The Riolog shows nothing, and the driver station shows 0 errors.
We're using an XBoxController. I'm also positive that we're using PWM port 0, and 2 for our CIM drive motors.
The problem is, the drive motors do not move. The compressor turns on, and for what we have hooked up, pneumatics works.
**UPDATE**
After going through everything, I've realized that I had Victors programmed when we were using VictorSP's. The drive now works. :)
package org.usfirst.frc.team6077.robot;
import edu.wpi.first.wpilibj.SampleRobot;
import edu.wpi.first.wpilibj.Solenoid;
import edu.wpi.first.wpilibj.TalonSRX;
import edu.wpi.first.wpilibj.Victor;
import edu.wpi.first.wpilibj.command.Scheduler;
import edu.wpi.first.wpilibj.livewindow.LiveWindow;
import edu.wpi.first.wpilibj.RobotDrive;
import edu.wpi.first.wpilibj.Compressor;
import edu.wpi.first.wpilibj.DoubleSolenoid;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.smartdashboard.SendableChoos er;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboar d;
public class Robot extends SampleRobot {
// RobotDrive Declaration
RobotDrive drive;
// Compressor Declaration
Compressor compressor;
// Solenoid Declaration
DoubleSolenoid doublesolenoid;
Solenoid solenoid;
// Joystick Declaration
Joystick xboxController;
// Motor Controller Declaration
TalonSRX armMotor;
TalonSRX slideMotor;
Victor drivemotor1;
Victor drivemotor2;
// Autonomous Names
final String defaultAuto = "Default";
final String customAuto = "Autonomous Choice 1";
final String customAuto2 = "Autonomous Choice 2";
final String customAuto3 = "Autonomous Choice 3";
final String customAuto4 = "Autonomous Choice 4";
final String customAuto5 = "Autonomous Choice 5";
// Chooser
SendableChooser chooser;
public Robot() {
//Change values later
drivemotor1 = new Victor(0);
drivemotor2 = new Victor(2);
compressor = new Compressor(0);
drive = new RobotDrive(drivemotor1, drivemotor2);
drive.setExpiration(0.1);
xboxController = new Joystick(0);
armMotor = new TalonSRX(5);
slideMotor = new TalonSRX(4);
doublesolenoid = new DoubleSolenoid(0, 1);
solenoid = new Solenoid(2);
chooser = new SendableChooser();
LiveWindow.addActuator("Drive", "Left Motor", drivemotor1);
LiveWindow.addActuator("Drive", "Right Motor", drivemotor2);
}
public void robotInit() {
compressor.start();
compressor.setClosedLoopControl(true);
chooser.addDefault("Default Auto", defaultAuto);
chooser.addObject("Autonomous Choice 1", customAuto);
chooser.addObject("Autonomous Choice 2", customAuto2);
chooser.addObject("Autonomous Choice 3", customAuto3);
chooser.addObject("Autonomous Choice 4", customAuto4);
chooser.addObject("Autonomous Choice 5", customAuto5);
SmartDashboard.putData("Autonomous Chooser", chooser);
}
public void autonomous() {
drive.setSafetyEnabled(false);
String autoSelected = (String) chooser.getSelected();
System.out.println("Autonomous Mode selected: " + autoSelected);
switch (autoSelected) {
case customAuto5:
break;
case customAuto4:
break;
case customAuto3:
break;
case customAuto2:
break;
case customAuto:
break;
case defaultAuto:
default:
break;
}
Scheduler.getInstance().run();
}
public void operatorControl() {
drive.setSafetyEnabled(false);
while (isOperatorControl() && isEnabled()) {
// Move robot using left and right joystick
drive.tankDrive(xboxController.getRawAxis(0), xboxController.getRawAxis(5));
// Lift and lower the arms using the right and left bumper.
if (xboxController.getRawButton(5)) {
armMotor.set(1);
} else if (xboxController.getRawButton(4)) {
armMotor.set(-1);
} else {
armMotor.set(0);
}
// Move sliding mechanism forwards and backwardss
if (Math.abs(xboxController.getRawAxis(5)) > .1) {
slideMotor.set(xboxController.getRawAxis(5));
} else {
slideMotor.set(0);
}
// Open and close the claw
if (xboxController.getRawButton(2)) {
doublesolenoid.set(DoubleSolenoid.Value.kForward);
} else if (xboxController.getRawButton(1)) {
doublesolenoid.set(DoubleSolenoid.Value.kReverse);
}
}
}
public void test() {
}
There are 0 errors in eclipse, and it builds successfully. The Riolog shows nothing, and the driver station shows 0 errors.
We're using an XBoxController. I'm also positive that we're using PWM port 0, and 2 for our CIM drive motors.
The problem is, the drive motors do not move. The compressor turns on, and for what we have hooked up, pneumatics works.
**UPDATE**
After going through everything, I've realized that I had Victors programmed when we were using VictorSP's. The drive now works. :)