How can i set a limit on how far the talon srx can go up and down?
package frc.robot;
import com.ctre.phoenix.motorcontrol.ControlMode;
import com.ctre.phoenix.motorcontrol.NeutralMode;
import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX;
import com.ctre.phoenix.motorcontrol.can.WPI_TalonFX;
import edu.wpi.first.wpilibj.motorcontrol.MotorControllerGroup;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.Servo;
import edu.wpi.first.wpilibj.TimedRobot;
/**
- The VM is configured to automatically run this class, and to call the functions corresponding to
- each mode, as described in the TimedRobot documentation. If you change the name of this class or
- the package after creating this project, you must also update the build.gradle file in the
- project.
/
public class Robot extends TimedRobot {
/*- This function is run when the robot is first started up and should be used for any
- initialization code.
*/
WPI_TalonFX motorRight1 = new WPI_TalonFX(0);
WPI_TalonFX motorRight2 = new WPI_TalonFX(1);
WPI_TalonFX motorRight3 = new WPI_TalonFX(2);
MotorControllerGroup groupRight = new MotorControllerGroup(motorRight1, motorRight2, motorRight3);
WPI_TalonFX motorLeft1 = new WPI_TalonFX(4);
WPI_TalonFX motorLeft2 = new WPI_TalonFX(3);
WPI_TalonFX motorLeft3 = new WPI_TalonFX(5);
MotorControllerGroup groupLeft = new MotorControllerGroup(motorLeft1, motorLeft2, motorLeft3);
WPI_TalonSRX window = new WPI_TalonSRX(10);
Servo Servo = new Servo(7);
//Controller
Joystick gamePad = new Joystick(0);
// Store the original servo position in a variable
double originalPosition;
@Override
public void robotInit()
{
window.set(ControlMode.PercentOutput, 0);
window.configFactoryDefault();
originalPosition = Servo.getAngle();
//Inverted setting
groupRight.setInverted(false);
groupLeft.setInverted(true);
motorLeft1.configFactoryDefault();
motorLeft2.configFactoryDefault();
motorLeft3.configFactoryDefault();
motorRight1.configFactoryDefault();
motorRight2.configFactoryDefault();
motorRight3.configFactoryDefault();
motorLeft1.setNeutralMode(NeutralMode.Brake);
motorLeft2.setNeutralMode(NeutralMode.Brake);
motorLeft3.setNeutralMode(NeutralMode.Brake);
motorRight1.setNeutralMode(NeutralMode.Brake);
motorRight2.setNeutralMode(NeutralMode.Brake);
motorRight3.setNeutralMode(NeutralMode.Brake);
window.setNeutralMode(NeutralMode.Brake);
}
@Override
public void robotPeriodic() {}
@Override
public void autonomousInit() {}
@Override
public void autonomousPeriodic() {}
@Override
public void teleopInit()
{
window.configFactoryDefault();
}
@Override
public void teleopPeriodic() {
if(gamePad.getRawButton(6)){
window.set(ControlMode.PercentOutput, 1.0);
}
else if (gamePad.getRawButton(5)){
window.set(ControlMode.PercentOutput, -1.0);
}
else {
window.set(ControlMode.PercentOutput, 0);
}
if (gamePad.getRawButton(1)) {
// Rotate servo to angle
Servo.set(0.35);
} else {
// Set servo angle to the original position
Servo.setAngle(originalPosition);
}
// Drive control - Arcade Drive
double leftStickY = -gamePad.getRawAxis(1);
double moveSpeed = -leftStickY; // inverted for proper control direction
double turnSpeed = -gamePad.getRawAxis(4);
// adjust move speed for better control at lower speeds
moveSpeed = Math.copySign(Math.pow(moveSpeed, 2.0), moveSpeed);
// combine move and turn speeds
double leftSpeed = moveSpeed + turnSpeed;
double rightSpeed = moveSpeed - turnSpeed;
// limit motor speed to maximum allowed value
double maxSpeed = 0.3;
leftSpeed = Math.copySign(Math.min(Math.abs(leftSpeed), maxSpeed), leftSpeed);
rightSpeed = Math.copySign(Math.min(Math.abs(rightSpeed), maxSpeed), rightSpeed);
// set motor speeds
groupLeft.set(leftSpeed);
groupRight.set(rightSpeed);
}
@Override
public void disabledInit()
{
groupLeft.stopMotor();
groupRight.stopMotor();
// Set servo angle to the original position
Servo.setAngle(originalPosition);
}
@Override
public void disabledPeriodic() {}
@Override
public void simulationInit() {}
@Override
public void simulationPeriodic() {}
}