如何使机器人跟随90度线?

时间:2019-06-15 19:00:43

标签: arduino

我创建了一种算法来遵循黑线。但是我有一个问题,那就是十字路口的机器人总是会完成前进的道路。但是我希望他走到左边。我的意思是,他始终把前进放在首位,而不是探索迷宫的所有方式

了解所有道路仅是弯道或直路

我将传感器00100传感器[0]传感器[1]传感器[2]传感器[3]传感器[4]放在黑线的中间。


read_sensor_values();




// i use 5 sensor 0 to 4 in table sensor[];
if(sensor[2]==HIGH){ 

  if(sensor[1]==LOW && sensor[3]==LOW){     
    go_Advance();  //straight
    set_Motorspeed(M_SPEED1,M_SPEED1);
  }
  else if(sensor[1]==HIGH && sensor[3]==LOW){ 
     go_Left();  //Turn left
     set_Motorspeed(0,M_SPEED1);
  }
  else if(sensor[1]==LOW && sensor[3]==HIGH){  
    go_Right();  //Turn right
    set_Motorspeed(M_SPEED1,0);
  }

}
else {if(sensor[2]==LOW){
   if(sensor[1]==HIGH && sensor[3]==LOW){ //Turn left
    go_Left();  
    set_Motorspeed(0,M_SPEED1);
  }
  else if(sensor[1]==LOW && sensor[3]==HIGH){  //Turn right
     go_Right();
     set_Motorspeed(M_SPEED1,0);
  }

}

else {
   go_Back();
   set_Motorspeed(M_SPEED1,M_SPEED1);
}
if(sensor[1]==HIGH){  
  if(sensor[0]==HIGH && sensor[2]==LOW){
    go_Left();
    set_Motorspeed(0,M_SPEED2);
  }
  else{  //Turn left
    go_Left();
    set_Motorspeed(0,M_SPEED1);
  }
}



if(sensor[3]==HIGH){  
  if(sensor[2]==LOW && sensor[4]==HIGH){ 
    go_Right();
    set_Motorspeed(M_SPEED2,0);
  }
  else{
    go_Right();
    set_Motorspeed(M_SPEED2,0); 
  }
}
}
}

1 个答案:

答案 0 :(得分:1)

  1. 您的一些情况彼此矛盾。在每种情况下检查每个传感器的状态。

  2. 如果我没记错的话,在十字路口,状态将是11111,这在任何地方都没有明确处理。 因此,当前在十字路口,'if(sensor [1] == HIGH)'块内的'else'部分和'if(sensor [3] == HIGH)'块内的'else'部分都将被执行。可能这将导致两个电动机都运行并向前移动。到十字路口过去时,它返回到00100状态并继续前进。

  3. 第一个if语句具有2个else语句,如果这是实际代码,则该语句不正确。假设第二个“ else”是“ else if”,则最终的“ else”将永远不会被执行,因为如果是“ sensor [2] == HIGH”,则永远为“ sensor [2] == LOW”。