|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#1
|
|||
|
|||
|
I've written code for our robot, but it is not working. There are 0 errors in Eclipse, and 0 errors in the driver station. I'm not sure if it's an issue with the code or with our electric wiring. Here is the code, please let me know if there's anything wrong.
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.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();
}
public void robotInit() {
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() {
compressor.getPressureSwitchValue();
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() {
compressor.getPressureSwitchValue();
drive.setSafetyEnabled(true);
while (isOperatorControl() && isEnabled()) {
// Move robot using left and right joystick
drive.tankDrive(xboxController.getRawAxis(2), 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() {
}
}
Last edited by Lesafian : 03-02-2016 at 17:58. |
|
#2
|
||||
|
||||
|
Re: Code does not work, and there seems to be 0 issues.
Which part? Also, why do you have a Robot constructor? You don't need that
Last edited by TimTheGreat : 03-02-2016 at 18:13. |
|
#3
|
|||
|
|||
|
Re: Code does not work, and there seems to be 0 issues.
Nothing works, and what do you mean?
|
|
#4
|
||||
|
||||
|
Re: Code does not work, and there seems to be 0 issues.
So you have public Robot(). You don't need this method. Just put it all in robotInit
|
|
#5
|
||||
|
||||
|
Re: Code does not work, and there seems to be 0 issues.
When you say "nothing works", what exactly do you mean? What is happening when you enable?
|
|
#6
|
|||
|
|||
|
Re: Code does not work, and there seems to be 0 issues.
The drive motors do not turn, the arm motor does not turn, the slide motor does not turn. The compressor works though.
|
|
#7
|
|||
|
|||
|
Re: Code does not work, and there seems to be 0 issues.
Maybe your joystick isn't working?
Have you had the code working before? If so, what changes have been made? |
|
#8
|
||||
|
||||
|
Re: Code does not work, and there seems to be 0 issues.
If there are 0 errors, be sure that you have the rioLog open in eclipse (open from the view menu). Also, assuming that you do not have any errors, have you used this roboRio successfully before now? Have you performed any recent updates? Have you installed Java on the rio?
|
|
#9
|
|||
|
|||
|
Re: Code does not work, and there seems to be 0 issues.
Yes, it has worked successfully. No I have not updated anything. No, there are 0 Rio log errors. Yes Ive installed java on it.
|
|
#10
|
|||
|
|||
|
Re: Code does not work, and there seems to be 0 issues.
Try adding some diagnostic tools to your code.
For example at the end of your constructor, try adding the following two lines: Code:
LiveWindow.addActuator("Drive", "Left Motor", drivemotor1);
LiveWindow.addActuator("Drive", "Right Motor", drivemotor2);
You can also add "debug output" that appears during normal operation. Try adding the following field (lastDashboardUpdate) and method to your Robot class: Code:
// time stamp of last time we sent values to dash board
private double lastDashboardUpdate = 0;
private void updateDashboard() {
double now = Timer.getFPGATimestamp();
// Diagnostic updates about 10 times a second
if ((now - lastDashboardUpdate) > 0.1) {
lastDashboardUpdate = now;
// Diagnostic information about the state of the robot
SmartDashboard.putNumber("Left Stick", xboxController.getRawAxis(2));
SmartDashboard.putNumber("Right Stick", xboxController.getRawAxis(5));
SmartDashboard.putNumber("Left Drive Power", drivemotor1.get());
SmartDashboard.putNumber("Right Drive Power", drivemotor2.get());
}
}
Deploy the code and start the driver station in Teleop mode. You should see values update on your smart dashboard corresponding to the inputs on your game pad and the output power of your drive motors. If you see zero values on your joysticks even when you are moving them, check the driver station console and make certain that your gamepad has not been re-mapped to a different port. After you get things working on the drive, you can comment out the debug output in the updateDashboard() method and use this approach to troubleshoot the rest of your components. |
|
#11
|
||||||
|
||||||
|
Re: Code does not work, and there seems to be 0 issues.
First, as someone who does software for a living, I would be an extremely rich person if I had $0.05 for every time I've heard (or said) those words.
![]() Second, your location says Posen. Is that as in Posen, MI? That would be pretty cool because I'm from that general area. Anyway, sorry to sidetrack the coversation. |
|
#12
|
|||
|
|||
|
Re: Code does not work, and there seems to be 0 issues.
Posen, MI.
![]() |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|