problem with motors and programs

When we run the robot, we have button 3 and button 2 on the right Joystick move the arm. but when we try it doesnt work. The speed controller turns red when we try, but w/o the codes its yellow. Anyhelp is our code wrong, cuz our tankdrive works

package org.team640;

import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.RobotDrive;
import edu.wpi.first.wpilibj.SimpleRobot;
import edu.wpi.first.wpilibj.Timer;
import edu.wpi.first.wpilibj.Victor;
import edu.wpi.first.wpilibj.camera.AxisCamera;
import edu.wpi.first.wpilibj.camera.AxisCameraException;
import edu.wpi.first.wpilibj.image.ColorImage;
import edu.wpi.first.wpilibj.image.NIVisionException;

public class FRC2011Team640 extends SimpleRobot {
private final double TARGET_SCORE_THRESHOLD = .01;
private RobotDrive robotDrive = new RobotDrive(1,2);
private Victor arm = new Victor (3);
private Joystick stickLeft = new Joystick(1);
private Joystick stickRight = new Joystick(2);
private AxisCamera cam;
private TrackerDashboard trackerDashboard = new TrackerDashboard();

public FRC2011Team640() {
    getWatchdog().setExpiration(0.5);
    initializeTargetting();
}

public void autonomous() {
    getWatchdog().setEnabled(false);
    for (int i = 1; i <=4; i = i +1) {
        robotDrive.drive(0.5,0.0);
        Timer.delay(2.0);
        robotDrive.drive(0.0,0.0);
        Timer.delay (2.0);
    }
}


private void processTarget() {
    try {
        System.out.println("Trying to obtain image");
        if (cam.freshImage()) {// && turnController.onTarget()) {
            System.out.println("Have fresh image");
            ColorImage image = cam.getImage();
            Thread.yield();
            Target] targets = Target.findCircularTargets(image);
            Thread.yield();
            image.free();
            if (targets.length <= 100 || targets[10].m_score
                    < TARGET_SCORE_THRESHOLD) //length == 0 (original)
            {
                System.out.println("No target found");
                Target] newTargets = new Target[targets.length + 1];
                newTargets[0] = new Target();
                newTargets[0].m_majorRadius = 10;
                // radius = 0 (original)
                newTargets[0].m_minorRadius = 1;
                newTargets[0].m_score = 2;
                for (int i = 1; i < targets.length; i++) {
                    newTargets* = targets*;
                }
                trackerDashboard.updateVisionDashboard(0.0, 0.0,
                        0.0, 0.0, newTargets);
            } else {
                System.out.println("HAVE TARGET!!!!!");
                System.out.println(targets[0]);
                System.out.println("Target Angle: "
                        + targets[0].getHorizontalAngle());
                trackerDashboard.updateVisionDashboard(0.0, 0.0,
                        0.0, targets[0].m_xPos / targets[0].m_xMax, targets);
            }
        } else {
            System.out.println("No image");
        }
    } catch (NIVisionException ex) {
        ex.printStackTrace();
    } catch (AxisCameraException ex) {
        ex.printStackTrace();
    }
}

private void initializeTargetting() {
    Timer.delay(10.0);
    cam = AxisCamera.getInstance();
    cam.writeResolution(AxisCamera.ResolutionT.k320x240);
    cam.writeBrightness(0);
}

    public void moveArm1() {
getWatchdog().feed();

            arm.set(1.0);
        Timer.delay(0.4);


    }

    public void moveArm2 () {
getWatchdog().setEnabled(true);
        arm.set(1.0);
    Timer.delay(3.5);
}

public void operatorControl() {
getWatchdog().setEnabled(true);

while (isEnabled() && isOperatorControl()) {
     if(stickLeft.getRawButton(3))
    { moveArm1();}
    else if (stickLeft.getRawButton(2))
    { moveArm2(); }

}

    }
}**

Does your driver station report the watchdog being fed? I don’t know much about the SimpleRobot template, but in Iterative a delay like the ones you have in your moveArm functions would starve the watchdog until the delay is over.

Take a look at your operatorControl.

You should have

getWatchdog().feed();

under

while(isEnabled && isOperatorControl()) {
    ....
}

yeah, we changed it so that the watchdog is fed, but it still doesnt move the motors. could it be wiring problem because when we try to move the arm in driverstation, the speed controlers turn red or is that because our code is bad?

What do they do when they turn red? Is it solid, quick flashing, or slow flashing? Based on your code, they should be either solid red or solid green (running at 100%). In any case, it may be worth checking the wiring.

Its solid red. We have the wire going to port 3 for the motor in the digital sidecar.

My apologies: I didn’t notice that you were using Victors and not Jaguars - I do not believe the solid red/blinking red diagnostic tool exists on the Victors. However, if the watchdog is reportedly fed, I would still go at it with a multimeter to see if it is receiving a signal.

With Victor motors, they do indeed give out light for diagnostics. Just the same as Jaguars, actually.

Blinking orange - No input
Red - backwards
Green - forwards

If you have your dashboard coded (you can just use the sample if you haven’t already), you can actually get a feed from PWM channels 1-10, typically under Slot 4. If your light is red, the dashboard should show whatever channel you have your victor plugged in to as a meter going down.