|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
|||
|
|||
|
Programming or Electrical Issue?
Our team is using 2 CIM motors using Victor speed controllers. Here's the code that I've written.
Code:
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.SendableChooser;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
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() {
}
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. ![]() Last edited by Lesafian : 07-02-2016 at 15:30. |
|
#2
|
|||
|
|||
|
Re: Programming or Electrical Issue?
Are your victors outputting any voltage/getting signal?
Did you ensure those numbers (0 and 2) are the correct numbers for the Victors? |
|
#3
|
|||
|
|||
|
Re: Programming or Electrical Issue?
Are you sure you are deploying the correct project? (happened to us one day preseason)
By "pneumatics works", does that mean you can actuate some of the solenoids? |
|
#4
|
|||||
|
|||||
|
Re: Programming or Electrical Issue?
Follow the signal all the way from joystick to motion - you could have issues at any step. Here are a few things to try:
|
|
#5
|
|||
|
|||
|
Re: Programming or Electrical Issue?
You don't have a wait method in the periodic. The motors cannot update.
put the line "Timer.delay(0.0075);" at the end of your public void operatorControl() method. source: https://wpilib.screenstepslive.com/s/4485/m/13809/l/241857-getting-your-robot-to-drive-with-the-robotdrive-class |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|