Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   Programming or Electrical Issue? (http://www.chiefdelphi.com/forums/showthread.php?t=143389)

Lesafian 07-02-2016 15:05

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() {
        }

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. :)

nighterfighter 07-02-2016 15:13

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?

Christopher149 07-02-2016 15:15

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?

GeeTwo 07-02-2016 15:23

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:
  • Watch the diagnositcs on the motor controller. Are they in neutral or drive forward or reverse? (I'm not familiar with the Victors' colors; we haven't used them since I got involved.) If the lights show the right answer, it's somewhere between the controller and the wheel. If they don't, it's somewhere on the user/rio side of the controller (or in the controller).
  • Monitor the input arguments to drive.tankDrive(). If these are bad, check the joysticks, both wiring and programming.
  • Try adding commands to individually spin the drive motors, similar to what you're doing with the actuators. This will help verify that the motors are connected to the ports you're expecting.

tuskiomi 08-02-2016 15:02

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


All times are GMT -5. The time now is 00:37.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi