can someone check this over with us? we’re not sure exactly where we need to place the piston, pressure switch, compressor, and solenoids in the digital sidecar.
package org.team640;
import edu.wpi.first.wpilibj.Compressor;
import edu.wpi.first.wpilibj.Jaguar;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.Relay;
import edu.wpi.first.wpilibj.RobotDrive;
import edu.wpi.first.wpilibj.SimpleRobot;
import edu.wpi.first.wpilibj.Solenoid;
import edu.wpi.first.wpilibj.Timer;
import edu.wpi.first.wpilibj.Servo;
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 armtest extends SimpleRobot {
private final double TARGET_SCORE_THRESHOLD = .01;
public static final double ELBOW_EXTEND_SPEED = 0.2;
public static final double ELBOW_EXTEND_TIME = 5.0;
public static final double WRIST_EXTEND_SPEED = 0.1;
public static final double WRIST_EXTEND_TIME = 2.0;
private RobotDrive robotDrive = new RobotDrive(1,2);
private Jaguar wrist = new Jaguar (3);
private Jaguar elbow = new Jaguar (4);
private Joystick stickLeft = new Joystick(1);
private Joystick stickRight = new Joystick(2);
private Servo cameraTilt = new Servo(3);
private Relay arm = new Relay(3);
private Compressor compressor = new Compressor(1,2);
private Solenoid pistonUp = new Solenoid(5);
private Solenoid pistonDown = new Solenoid(6);
private AxisCamera cam;
private TrackerDashboard trackerDashboard = new TrackerDashboard();
//In this, X represents the relay output number and Y is the joystick port.
public armtest() {
getWatchdog().setExpiration(0.5);
initializeTargetting();
compressor.start();
}
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 operatorControl() {
getWatchdog().setEnabled(true);
while (isEnabled() && isOperatorControl()) {
getWatchdog().feed();
{ robotDrive.tankDrive(stickLeft, stickRight);
if (stickLeft.getTrigger()) {
arm.set(Relay.Value.kForward);
} else if (stickRight.getTrigger()) {
arm.set(Relay.Value.kReverse);
} else {
arm.set(Relay.Value.kOff);
}
//In this, X represents the relay output number and Y is the joystick port.
if (stickLeft.getTrigger()) {
elbow.set(ELBOW_EXTEND_SPEED);
Timer.delay(ELBOW_EXTEND_TIME);
elbow.set(0);
wrist.set(WRIST_EXTEND_SPEED);
Timer.delay(WRIST_EXTEND_TIME);
wrist.set(0);
}
if (stickLeft.getTrigger()) {
pistonUp.set(true);
} else if (stickLeft.getRawButton(3)) {
pistonDown.set(true);
} else {
pistonUp.set(false);
pistonDown.set(false);
}
if (stickLeft.getTrigger()) {
cameraTilt.set(1.0);
} else {
cameraTilt.set(0.5);
}
}
}
}
}**