VersaPlanetary Integrated Encoder
We are having problems with the encoder. The Code is as follows.
public class Shooter extends Subsystem {
public CANTalon shooterMotorOne = new CANTalon(RobotMap.shooterMotorOne);
CANTalon shooterMotorTwo = new CANTalon(RobotMap.shooterMotorTwo);
CANTalon shooterMotorThree = new CANTalon(RobotMap.shooterMotorThree);
CANTalon shooterMotorFour = new CANTalon(RobotMap.shooterMotorFour);
public void updateDashboard()
{
double leftShootSpeed = shooterMotorOne.getSpeed();
SmartDashboard.putNumber("Speed",shooterMotorOne.g etSpeed());
System.out.println("Left Shoot Speed: " + leftShootSpeed);
SmartDashboard.putNumber("Error: ", shooterMotorOne.getClosedLoopError());
}
protected void initDefaultCommand() {
setDefaultCommand (new Shoot(0));
}
public void shoot(double speed) {
shooterMotorOne.setFeedbackDevice(FeedbackDevice.C treMagEncoder_Relative);
shooterMotorTwo.setFeedbackDevice(FeedbackDevice.C treMagEncoder_Relative);
shooterMotorThree.setFeedbackDevice(FeedbackDevice .CtreMagEncoder_Relative);
shooterMotorFour.setFeedbackDevice(FeedbackDevice. CtreMagEncoder_Relative);
shooterMotorOne.reverseSensor(false);
shooterMotorTwo.reverseSensor(false);
shooterMotorThree.reverseSensor(true);
shooterMotorFour.reverseSensor(true);
shooterMotorOne.changeControlMode(TalonControlMode .Speed);
shooterMotorTwo.changeControlMode(TalonControlMode .PercentVbus);
shooterMotorThree.changeControlMode(TalonControlMo de.PercentVbus);
shooterMotorFour.changeControlMode(TalonControlMod e.PercentVbus);
double shooterP = Robot.prefs.getDouble("shooterP", 0.4);
double shooterI = Robot.prefs.getDouble("shooterI", 0);
double shooterD = Robot.prefs.getDouble("shooterD", 0);
double shooterF = Robot.prefs.getDouble("shooterF", 0);
double prefspeed = Robot.prefs.getDouble("prefspeed", 100);
shooterMotorOne.setPID(shooterP, shooterI, shooterD, shooterF, 0, 0, 0);
shooterMotorTwo.setPID(shooterP, shooterI, shooterD, shooterF, 0, 0, 0);
shooterMotorThree.setPID(shooterP, shooterI, shooterD, shooterF, 0, 0, 0);
shooterMotorFour.setPID(shooterP, shooterI, shooterD, shooterF, 0, 0, 0);
shooterMotorOne.set(speed);
shooterMotorTwo.set(speed);
shooterMotorThree.set(speed);
shooterMotorFour.set(speed);
}
The code provides no errors. When we run the robot everything functions correctly, and we get an error value yet we do not receive anything for speedL. We tried 2 old encoders, and even built a new encoder.
|