我正在尝试为机器人编写一个“锁定按钮”,但是当我运行代码时机器人没有响应

时间:2016-11-20 16:19:54

标签: java button robotics

当按下并释放游戏控制器上的'a'按钮时,我需要编程机器人以50%的速度行驶,然后当按下'a'并再次释放时,以100%的速度行驶,就像锁定一样按钮。我有以下代码,当'a'被持续按下时,机器人驱动器为50%,当'a'被释放时为100%,它工作正常。

    telemetry.addData("Status", "Running: " + runtime.toString());
    if(gamepad1.a)
    {
        telemetry.addData("Status", "A pressed");
                leftMotor.setPower(-gamepad1.left_stick_y*0.5);
                rightMotor.setPower(-gamepad1.right_stick_y*0.5);
                telemetry.addData("Status", "Running Slow");
            }

            else {
                leftMotor.setPower(-gamepad1.left_stick_y);
                rightMotor.setPower(-gamepad1.right_stick_y);
                telemetry.addData("Status", "Running regular");
                                }



}

这是我锁定按钮的代码,它在运行时不会驱动。我认为这只是修复if和else语句的问题,但我无法确定问题所在。

    telemetry.addData("Status", "Running: " + runtime.toString());
    if(gamepad1.a)
    {
        telemetry.addData("Status", "A pressed");
        //if A was pressed
        if(aPressed == false)
        {
            aPressed = true;
            if(goingSlow)
            {
                leftMotor.setPower(-gamepad1.left_stick_y);
                rightMotor.setPower(-gamepad1.right_stick_y);
                telemetry.addData("Status", "Running Regular");
                goingSlow = false;
            }

                  else {
                    leftMotor.setPower(-gamepad1.left_stick_y*0.5);
                    rightMotor.setPower(-gamepad1.right_stick_y*0.5);
                    telemetry.addData("Status", "Running Slow");
                    goingSlow = true;
                }
            }
        }
        else
        {
            aPressed = false;
        }

1 个答案:

答案 0 :(得分:0)

我认为你试图在“if”语句的分支内部做太多。将一些功能移到其他方法应该会使事情更容易理解。

很难确切地知道发生了什么,因为你没有展示整个方法,或提供关于你如何通知按钮按下/释放的任何上下文,但你可能想尝试这样的事情,一旦你已按下按钮按下并弄清楚你是否要慢或快:

if(shouldGoFast) {
 goFast();
} else {
 goSlow();
}

public void goFast() {
  leftMotor.setPower(-gamepad1.left_stick_y);
  rightMotor.setPower(-gamepad1.right_stick_y);
  telemetry.addData("Status", "Running Regular"); 
}

public void goSlow() {
  leftMotor.setPower(-gamepad1.left_stick_y*0.5);
  rightMotor.setPower(-gamepad1.right_stick_y*0.5);
  telemetry.addData("Status", "Running Slow");
}

我假设您并不需要跟踪当前是慢速还是快速,即如果您已经快速执行goFast()则没有问题。