2016-11-20 58 views
0

我需要編程一個機器人以50%的速度驅動,當「a」按鈕在遊戲控制器被按下並釋放,然後當「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; 
     } 

回答

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(),則沒有問題。