FR C проблема с запуском двигателя на определенное время - PullRequest
0 голосов
/ 29 февраля 2020

Итак, я пытаюсь, чтобы код запускал двигатель на определенное время в зависимости от того, что воспринимает цветовой датчик REV V3. Я перепробовал много вещей. но, в конце концов, он просто застрял в бесконечном l oop. Я не знаю, как исправить эту вещь, я не знаю, есть ли способ сделать это, а не то, что я пытаюсь сделать.

private void redDetect(){
  long t= System.currentTimeMillis();

  if (buttons[9]){
    long endg = t+15000; 
    while (System.currentTimeMillis() < endg) {
      trenchMotor.set(0.6);
      break;
    }
  }
  if (buttons[10]){
    long endy = t+10000; 
    while (System.currentTimeMillis() < endy) {
      trenchMotor.set(0.6);
      break;
    }
  }
    if (buttons[11]){
      long endr = t+7000; 
      while (System.currentTimeMillis() < endr) {
        trenchMotor.set(0.6);
        break;
      }
    }
      if (buttons[12]){
        long endb = t+5000; 
        while (System.currentTimeMillis() < endb) {
          trenchMotor.set(0.6);
          break;
        }
    } 
} 

private void blueDetect(){
  long t= System.currentTimeMillis();

  if (buttons[9]){
    long endg = t+15000; 
    while (System.currentTimeMillis() < endg) {
      trenchMotor.set(0.6);
      break;
    }
  }
  if (buttons[10]){
    long endy = t+10000; 
    while (System.currentTimeMillis() < endy) {
      trenchMotor.set(0.6);
      break;
    }
  }
    if (buttons[11]){
      long endr = t+7000; 
      while (System.currentTimeMillis() < endr) {
        trenchMotor.set(0.6);
        break;
      }
    }
      if (buttons[12]){
        long endb = t+5000; 
        while (System.currentTimeMillis() < endb) {
          trenchMotor.set(0.6);
          break;
        }
    } 
} 

private void greenDetect(){
int endg = 10;

  if (buttons[9]){
    while (endg > 0) {
      trenchMotor.set(0.6);
      endg --; 

      break;
    }
  }
  if (buttons[10]){
    int endy = 1000;
    while (endy > 0) {
      trenchMotor.set(0.6);
      endy--;
      break;
    }
  }
    if (buttons[11]){
      int endr = 7000; 
      while (endr > 0) {
        trenchMotor.set(0.6);
        endr--;
        break;
      }
    }
      if (buttons[12]){
        int endb = 5000; 
        while (endb > 0) {
          trenchMotor.set(0.6);
          endb--;
          break;
        }
    } 
} 

private void yellowDetect(){
  long t= System.currentTimeMillis();

  if (buttons[9]){
    long endg = t+15000; 
    while (System.currentTimeMillis() < endg) {
      trenchMotor.set(0.6);
      break;
    }
  }
  if (buttons[10]){
    long endy = t+10000; 
    while (System.currentTimeMillis() < endy) {
      trenchMotor.set(0.6);
      break;
    }
  }
    if (buttons[11]){
      long endr = t+7000; 
      while (System.currentTimeMillis() < endr) {
        trenchMotor.set(0.6);
        break;
      }
    }
      if (buttons[12]){
        long endb = t+5000; 
        while (System.currentTimeMillis() < endb) {
          trenchMotor.set(0.6);
          break;
        }
    } 
} 



if(detectedColor.red > detectedColor.green && detectedColor.red > detectedColor.blue) {
      redDetect();
    }

    if(detectedColor.blue > detectedColor.green && detectedColor.blue > detectedColor.red) {
      blueDetect();
    }

    if(detectedColor.green > detectedColor.blue && detectedColor.green > detectedColor.red) {
      greenDetect();
    }
...