Log in

View Full Version : Help !!!!


Team1605
22-03-2012, 10:32
i need serious help how can i get the buttons to work on my joystick how do i program it ??? here is my code is it correct ??

/*----------------------------------------------------------------------------*/
/* Copyright (c) FIRST 2008. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/

package edu.wpi.first.wpilibj.templates;


import edu.wpi.first.wpilibj.Joystick.AxisType;
import edu.wpi.first.wpilibj.*;

/**
* The VM is configured to automatically run this class, and to call the
* functions corresponding to each mode, as described in the SimpleRobot
* documentation. If you change the name of this class or the package after
* creating this project, you must also update the manifest file in the resource
* directory.
*/
public class Team1605 extends SimpleRobot {


Joystick stickDriverLeft = new Joystick(1);
Joystick stickDriverRight = new Joystick(2);


Jaguar leftMotor = new Jaguar(2);
Jaguar rightMotor = new Jaguar(1);
Jaguar shooterMotor1 = new Jaguar(3);
Jaguar shooterMotor2 = new Jaguar(4);
Jaguar gatherMotor1 = new Jaguar(5);
Jaguar gatherMotor2 = new Jaguar (6);

RobotDrive robotDrive = new RobotDrive(leftMotor,rightMotor);
Shooter shooter = new Shooter(shooterMotor1,shooterMotor2);
Gatherer gatherer = new Gatherer(gatherMotor1, gatherMotor2);

final int TRIGGER_NUMBER = 1;
final int GATHER_START_BUTTON = 2;
final int GATHER_STOP_BUTTON = 3;


/**
* This function is called once each time the robot enters autonomous mode.
*/
public void autonomous() {

}

/**
* This function is called once each time the robot enters operator control.
*/
public void OperatorControl() {
while(isOperatorControl() && isEnabled())
{

robotDrive.tankDrive(stickDriverLeft.getAxis(AxisT ype.kY), stickDriverRight.getAxis(AxisType.kY));


if(stickDriverRight.getRawButton(TRIGGER_NUMBER)) {
shooter.set(1);
}
else {
shooter.set(0);
}


if(stickDriverRight.getRawButton(GATHER_START_BUTT ON)) {
gatherer.set(1);
}
else if(stickDriverRight.getRawButton(GATHER_STOP_BUTTO N)) {
gatherer.set(0);
}
Timer.delay(.01);
}

}
}

2869Robotics
22-03-2012, 13:02
The way that you have your trigger set up. As long as you hold the trigger down the shooter will be set at 1 but if you let go of the trigger it will be set back at 0. Do you want the trigger to toggle the shooter on and off?

NS_Radication
28-03-2012, 13:37
Can someone posta code for a toggle button or for an array of buttons that can change speeds with a press, not held down? This would be very help!

Thank you and Happy Competition!

Ginto8
28-03-2012, 15:23
Both toggle and cycle buttons are based on a button "press" instead of just being held down. To detect when a button is pressed:
// outside the "checking" loop
boolean prevState = false;

// inside checking loop; can be within continuous or periodic
boolean currentState = joy.getRawButton(DESIRED_BUTTON);
if(currentState && !prevState) {
// Button DESIRED_BUTTON is newly pressed
// Do stuff here
}
prevState = currentState;
To do a toggle, have an extra boolean (e.g. tracking), then when the button is pressed:
tracking = !tracking;
To do a cycle, have an int (e.g. basketChoice) and do this on button pressed:
basketChoice = (basketChoice+1)%NUM_CHOICES;

Team1605
28-03-2012, 15:52
i need help. in tank drive one of my wheels keep spinning and the other responds properly with one joystick.MY SHOOTER GATHERER AND BRIDGE HAND WORK. how can i fix this. this is my code :

/*----------------------------------------------------------------------------*/
/* Copyright (c) FIRST 2008. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/

package edu.wpi.first.wpilibj.templates;


import edu.wpi.first.wpilibj.Joystick.AxisType;
import edu.wpi.first.wpilibj.*;

/**
* The VM is configured to automatically run this class, and to call the
* functions corresponding to each mode, as described in the SimpleRobot
* documentation. If you change the name of this class or the package after
* creating this project, you must also update the manifest file in the resource
* directory.
*/
public class Team1605 extends SimpleRobot {


Joystick stickDriverLeft = new Joystick(1);
Joystick stickDriverRight = new Joystick(2);


Jaguar leftMotor = new Jaguar(2);
Jaguar rightMotor = new Jaguar(1);
Jaguar shooterMotor1 = new Jaguar(3);
Jaguar shooterMotor2 = new Jaguar(4);
Jaguar gatherMotor1 = new Jaguar(5);
Jaguar gatherMotor2 = new Jaguar (6);
Victor bridgeHandMotor = new Victor(7);
RobotDrive robotDrive = new RobotDrive(leftMotor,rightMotor);
Shooter shooter = new Shooter(shooterMotor1,shooterMotor2);
Gatherer gatherer = new Gatherer(gatherMotor1, gatherMotor2);
BridgeHand bridgeHand = newBridgHand(bridgeHandMotor);



/**
* This function is called once each time the robot enters autonomous mode.
*/
public void autonomous() {

}

/**
* This function is called once each time the robot enters operator control.
*/
public void OperatorControl() {
while(isOperatorControl() && isEnabled())
{

robotDrive.tankDrive(stickDriverLeft.getAxis(Joyst ick.AxisType.kY), stickDriverRight.getAxis(Joystick.AxisType.kY));


if(stickDriverRight.getButton(Joystick.AxisType.kT rigger)) {
shooter.set(1);
}
else {
shooter.set(0);
}


if(stickDriverLeft.getButton(Joystick.ButtonType.k Trigger)) {
gatherer.set(1);
}
else {
gatherer.set(0);
}
bridgeHand.set(stickDriverRight.getAxis(Joystick.A xisType.kX));

Timer.delay(.01);
}

}
}

NS_Radication
28-03-2012, 23:59
To do a cycle, have an int (e.g. basketChoice) and do this on button pressed:
basketChoice = (basketChoice+1)%NUM_CHOICES;

What can this do? Could this be used to add a ball count to the robot.

Ginto8
29-03-2012, 10:20
What can this do? Could this be used to add a ball count to the robot.

This is called modular arithmetic (http://en.wikipedia.org/wiki/Modular_arithmetic). You probably don't want to use that particular method for counting balls, because if, for example, your NUM_CHOICES were 3, then as balls enter the count would go 0,1,2,0,1,2, instead of 0,1,2,3,4 as they entered and 4,3,2,1,0 as they left.