这是我的程序。为什么它一直在移动而不是停止?我没有看到任何明显的问题,电机只是继续转动而不停止。
package org.firstinspires.ftc.teamcode.drive.auto;
import com.qualcomm.robotcore.eventloop.opmode.Autonomous;
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
import com.qualcomm.robotcore.hardware.DcMotor;
import com.qualcomm.robotcore.hardware.DcMotorSimple;
@Autonomous(name="EncoderTestOneThousand", group="Autonomous")
public class EncoderTestOneThousand extends LinearOpMode {
private DcMotor main;
private int mainPos;
@Override
public void runOpMode() {
main = hardwareMap.get(DcMotor.class, "main");
main.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER);
main.setDirection(DcMotorSimple.Direction.REVERSE);
mainPos = 0;
waitForStart();
drive (100, 0.5);
}
private void drive(int mainTarget, double speed) {
mainPos += mainTarget;
main.setTargetPosition(mainPos);
main.setMode(DcMotor.RunMode.RUN_TO_POSITION);
main.setPower(speed);
while (opModeIsActive() && main.isBusy()) {
idle();
}
}
}
我尝试删除并添加括号,但仍然得到相同的结果。我已经仔细检查过一切,没有发现任何它不会停止运动的原因。
试试这个:
private void drive(int mainTarget, double speed) {
mainPos += mainTarget;
main.setTargetPosition(mainPos);
main.setMode(DcMotor.RunMode.RUN_TO_POSITION);
main.setPower(speed);
while (opModeIsActive() && main.isBusy()) {
idle();
}
main.setPower(0); // Stop the motor here
}