我的 FTC 电机持续运转,有什么想法吗?

问题描述 投票:0回答:1

这是我的程序。为什么它一直在移动而不是停止?我没有看到任何明显的问题,电机只是继续转动而不停止。

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();
        }
    }
}

我尝试删除并添加括号,但仍然得到相同的结果。我已经仔细检查过一切,没有发现任何它不会停止运动的原因。

java robotics
1个回答
0
投票

试试这个:

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
}

© www.soinside.com 2019 - 2024. All rights reserved.