0

我想停止一个连续转动的伺服电机,直到超声波传感器检测到障碍物。例如,我希望伺服电机在障碍物距离超声波传感器 5 厘米以内时停止。如果没有障碍物,伺服电机应该不停地转动。

然而,在移除障碍物后,我的伺服电机开始从不同的角度旋转,而不是停止的地方。我添加了 Arduino 代码的伺服电机旋转部分。`

  void loop() {

    for (int i=0; i<=180; i++) {  
      distance = calculateDistance();
      if (distance <= 10){
        moveStop();
      } else {  
        moveForward();
        myServo.write(i);
        delay(5);  
      } 
    }

    for (int i=180; i>0; i--) {  
      distance = calculateDistance();
      if (distance <= 10) {
        moveStop();
      } else {  
        moveForward();
        myServo.write(i);
        delay(5);
      }
4

1 回答 1

0

问题是即使物体挡在路上,我也会不断被计数。无法准确地重新创建您的设置,但我希望这对您有所帮助

int y = 0


void loop() {

  for(int i=0;i<=180;i++){  

    distance = calculateDistance();
    if (distance <= 10){
      moveStop();
      y++;                  //"counts the time" the servo is blocked by object
      }
    else{  
      moveForward();
      myServo.write(i-y);   //and subtracts that time from i
      delay(5);  
      } 
    }

  for(int i=180;i>0;i--){  

  distance = calculateDistance();
  if (distance <= 10){
    moveStop();
    y++;
    }
  else{  
    moveForward();
    myServo.write(i+y);              //same but in reverse
    delay(5);
    }
于 2020-11-21T14:20:02.413 回答