关于Arduino红外寻迹代码和红外避障代码两个单独的代码如何合在一起运行

关于Arduino红外寻迹代码和红外避障代码两个单独的代码如何合在一起运行?
求帮忙,马上答辩了。
避障:


//***********************定义电机腳位*************************

int MotorLeft1 = 11;
int MotorLeft2 = 6;
int MotorRight1 = 3;
int MotorRight2 = 5;
int counter = 0;


const int barrier_left = A5; //左红外避障
const int barrier_right = A0; //右红外避障


//********************************************************************(SETUP)
void setup()
{
  Serial.begin(9600);
  pinMode(MotorRight1, OUTPUT);  // 
  pinMode(MotorRight2, OUTPUT);  // 
  pinMode(MotorLeft1,  OUTPUT);  // 
  pinMode(MotorLeft2,  OUTPUT);  // 


  pinMode(barrier_left, INPUT);
  pinMode(barrier_right, INPUT);

  Serial.println("-----------------");
}
//******************************************************************(Void)
void advance(int a) // 前进
{
  Serial.println("advance");
  digitalWrite(MotorRight1, LOW);
  digitalWrite(MotorRight2, HIGH);
  digitalWrite(MotorLeft1, LOW);
  digitalWrite(MotorLeft2, HIGH);
  delay(a * 100);
}
void right(int b) //右转 单轮
{
  Serial.println("right");
  digitalWrite(MotorLeft1, LOW);
  digitalWrite(MotorLeft2, HIGH);
  digitalWrite(MotorRight1, LOW);
  digitalWrite(MotorRight2, LOW);
  delay(b * 100);
}
void left(int c) //左转 轮
{
  Serial.println("left");
  digitalWrite(MotorRight1, LOW);
  digitalWrite(MotorRight2, HIGH);
  digitalWrite(MotorLeft1, LOW);
  digitalWrite(MotorLeft2, LOW);
  delay(c * 100);
}
void turnR(int d) //右转 双轮
{
  Serial.println("turnR");
  digitalWrite(MotorRight1, HIGH);
  digitalWrite(MotorRight2, LOW);
  digitalWrite(MotorLeft1, LOW);
  digitalWrite(MotorLeft2, HIGH);
  delay(d * 100);
}
void turnL(int e) //左转 双轮
{
  Serial.println("turnL");
  digitalWrite(MotorRight1, LOW);
  digitalWrite(MotorRight2, HIGH);
  digitalWrite(MotorLeft1, HIGH);
  digitalWrite(MotorLeft2, LOW);
  delay(e * 100);
}
void stopp(int f) //停止
{
  Serial.println("stopp");
  digitalWrite(MotorRight1, LOW);
  digitalWrite(MotorRight2, LOW);
  digitalWrite(MotorLeft1, LOW);
  digitalWrite(MotorLeft2, LOW);
  delay(f * 100);
}
void back(int g) //后退
{
  Serial.println("back");
  digitalWrite(MotorRight1, HIGH);
  digitalWrite(MotorRight2, LOW);
  digitalWrite(MotorLeft1, HIGH);
  digitalWrite(MotorLeft2, LOW);;
  delay(g * 100);
}
//******************************************************************************(LOOP)
void loop()
{
        if ((digitalRead(barrier_left)==LOW) && (digitalRead(barrier_right)==LOW))
        {

          back(5);//后退
        }
        else if (digitalRead(barrier_left)==LOW)
        {
          right(6); // 右转;
        }
        else if (digitalRead(barrier_right)==LOW)
        {
          left(6); // 左转;
        }
        else

          advance(0);//前进
}

寻迹:


//***********************定义电机腳位*************************

int MotorLeft1 = 11;
int MotorLeft2 = 6;
int MotorRight1 = 3;
int MotorRight2 = 5;
int counter = 0;


//*************************定义寻线模块脚位************************************
const int SensorLeft = 8;      //左传感器
const int SensorMiddle = 7 ;   //中传感器
const int SensorRight = 4;     //右传感器
int SL;    //左传感器状态
int SM;    //中传感器状态
int SR;    //右传感器状态

//********************************************************************(SETUP)
void setup()
{
  Serial.begin(9600);
  pinMode(MotorRight1, OUTPUT);  // 
  pinMode(MotorRight2, OUTPUT);  // 
  pinMode(MotorLeft1,  OUTPUT);  // 
  pinMode(MotorLeft2,  OUTPUT);  // 
  pinMode(SensorLeft, INPUT); //
  pinMode(SensorMiddle, INPUT);//
  pinMode(SensorRight, INPUT); //

  Serial.println("-----------------");
}
//******************************************************************(Void)
void advance(int a) // 前进
{
  Serial.println("advance");
  digitalWrite(MotorRight1, LOW);
  digitalWrite(MotorRight2, HIGH);
  digitalWrite(MotorLeft1, LOW);
  digitalWrite(MotorLeft2, HIGH);
  delay(a * 100);
}
void right(int b) //右转 单轮
{
  Serial.println("right");
  digitalWrite(MotorLeft1, LOW);
  digitalWrite(MotorLeft2, HIGH);
  digitalWrite(MotorRight1, LOW);
  digitalWrite(MotorRight2, LOW);
  delay(b * 100);
}
void left(int c) //左转 轮
{
  Serial.println("left");
  digitalWrite(MotorRight1, LOW);
  digitalWrite(MotorRight2, HIGH);
  digitalWrite(MotorLeft1, LOW);
  digitalWrite(MotorLeft2, LOW);
  delay(c * 100);
}
void turnR(int d) //右转 双轮
{
  Serial.println("turnR");
  digitalWrite(MotorRight1, HIGH);
  digitalWrite(MotorRight2, LOW);
  digitalWrite(MotorLeft1, LOW);
  digitalWrite(MotorLeft2, HIGH);
  delay(d * 100);
}
void turnL(int e) //左转 双轮
{
  Serial.println("turnL");
  digitalWrite(MotorRight1, LOW);
  digitalWrite(MotorRight2, HIGH);
  digitalWrite(MotorLeft1, HIGH);
  digitalWrite(MotorLeft2, LOW);
  delay(e * 100);
}
void stopp(int f) //停止
{
  Serial.println("stopp");
  digitalWrite(MotorRight1, LOW);
  digitalWrite(MotorRight2, LOW);
  digitalWrite(MotorLeft1, LOW);
  digitalWrite(MotorLeft2, LOW);
  delay(f * 100);
}
void back(int g) //后退
{
  Serial.println("back");
  digitalWrite(MotorRight1, HIGH);
  digitalWrite(MotorRight2, LOW);
  digitalWrite(MotorLeft1, HIGH);
  digitalWrite(MotorLeft2, LOW);;
  delay(g * 100);
}
//******************************************************************************(LOOP)
void loop()
{


  SL = digitalRead(SensorLeft);
  SM = digitalRead(SensorMiddle);
  SR = digitalRead(SensorRight);

      {
        SL = digitalRead(SensorLeft);
        SM = digitalRead(SensorMiddle);
        SR = digitalRead(SensorRight);
        Serial.print(SL);
        Serial.print("-");
        Serial.print(SM);
        Serial.print("-");
        Serial.println(SR);
        if (SM == HIGH)//中间传感器检测到黑线  黑线为1 白为0
        {
          if (SL == LOW & SR ==  HIGH) //左白右黑, 向右转弯
          {
            Serial.println("BL");
            analogWrite(MotorRight1, 0); //右转
            analogWrite(MotorRight2, 80);
            digitalWrite(MotorLeft1, LOW);
            digitalWrite(MotorLeft2, HIGH);
          }
          else if ( SL ==  HIGH & SR == LOW) // 左黑右白, 向左转弯
          {
            Serial.println("BR");

            digitalWrite(MotorRight1, LOW);
            digitalWrite(MotorRight2, HIGH);
            analogWrite(MotorLeft1, 0);
            analogWrite(MotorLeft2, 80);
          }
          else  // 两侧为白色,前进
          {
            Serial.println("Bw");
            digitalWrite(MotorRight1, LOW);
            digitalWrite(MotorRight2, HIGH);
            digitalWrite(MotorLeft1, LOW);
            digitalWrite(MotorLeft2, HIGH);
            /*
              analogWrite(MotorLeft1,0);
              analogWrite(MotorLeft2,150);
              analogWrite(MotorRight1,0);
              analogWrite(MotorRight2,150);
            */
          }
        }
        else // 中间传感器在白色区域
        {
          if (SL == LOW & SR == HIGH ) // 左白右黑, 快速右转
          {
            Serial.println("WL");

            digitalWrite(MotorRight1, LOW);
            digitalWrite(MotorRight2, LOW);
            digitalWrite(MotorLeft1, LOW);
            digitalWrite(MotorLeft2, HIGH);
          }
          else if ( SL == HIGH & SR == LOW ) // 左黑右白, 快速左转
          {
            Serial.println("WR");

            digitalWrite(MotorRight1, LOW);
            digitalWrite(MotorRight2, HIGH);
            digitalWrite(MotorLeft1, LOW);
            digitalWrite(MotorLeft2, LOW);
          }
          else // 都是白色, 保护不变
          {
            Serial.println("ww");
            /*
                         analogWrite(MotorLeft1,255);
                         analogWrite(MotorLeft2,125);
                         analogWrite(MotorRight1,255);
                         analogWrite(MotorRight2,125);
            */
          }
        }
        
      }
  
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

E18-D80NK 红外避障传感器的检测距离可以通过调节传感器上的旋钮来设置。具体步骤如下:
将传感器连接到电源和微控制器。

打开串口监视器或其他调试工具,以便在微控制器上查看传感器输出的距离值。

将物体放置在传感器前面,然后轻轻旋转传感器上的旋钮,直到距离值达到所需的范围。

如果需要更精确的距离测量,可以使用示波器或逻辑分析仪来观察传感器输出的脉冲信号,并进一步调节旋钮以优化检测距离。