Avoidance by Infrared and Ultrasonic(二)

在上一节中已经说明了要使用的超声波模块、红外避障模块和舵机模块的简单使用,这一节中就要将这些模块结合起来使用,实现其避障的功能

一、红外避障模块实现避障

void infraredJudge(){
  while(1){
    turnForward();
    infraredLeftState = digitalRead(infraredLeft);
    infraredRightState = digitalRead(infraredRight);

    //obstacle on the left
    if(infraredLeftState == LOW && infraredRightState == HIGH){
      turnRight();
      delay(200);
    }
    //obstacle on the right
    else if(infraredLeftState == HIGH && infraredRightState == LOW){
      turnLeft();
      delay(200); 
    }
    //obstacle on the right and left
    else if(infraredLeftState == LOW && infraredRight == LOW){
      turnStop();
      delay(100);
      turnBack();
      delay(300);
      turnRight();
      delay(700); 
   }
   else
      turnForward();
}

二、超声波模块实现避障

void distanceTestFront(){
  turnServo(servoAngleFront);
  delay(500);//make sure the servo reach specify position
  servoAngleCurrent = servoAngleFront;
  distanceFront = distanceTest();
}

void distanceTestLeft(){
  turnServo(servoAngleLeft);
  delay(500);
  servoAngleCurrent = servoAngleLeft;
  distanceLeft = distanceTest();
}

void distanceTestRight(){
  turnServo(servoAngleRight);
  delay(500);
  servoAngleCurrent = servoAngleRight;
  distanceRight = distanceTest();
}

void ultrasonicJudge(){
  while(1){
    turnForward();
    distanceTestFront();
    if(distanceFront < 20){
      turnStop();
      delay(100);
      turnBack();
      delay(200);
      turnStop();
      delay(100);
      distanceTestLeft();
      distanceTestRight();
      delay(100);
      if(distanceLeft < 20 && distanceRight < 20){
          turnRightOriginal();
          delay(700);
      }  
      else if(distanceLeft > distanceRight){
         turnLeft();
         delay(300);  
      }
      else if(distanceLeft < distanceRight){
        turnRight();
        delay(300);  
      }
      else
        turnForward();
    }
}

三、超声波模块和红外避障模块实现避障

void infraUltraJudge(){
  while(1){
    turnForward();
    infraredLeftState  = digitalRead(infraredLeft);
    infraredRightState = digitalRead(infraredRight);
    if(infraredLeftState == LOW && infraredRightState == HIGH){
      turnRight();
      delay(150);
    }
    else if(infraredLeftState == HIGH && infraredRightState == LOW){
      turnLeft();
      delay(150);
    }
    else if(infraredLeftState == LOW && infraredRightState == LOW){
      turnStop();
      delay(200);
      distanceTestFront();
      if(distanceFront <= 20){
        distanceTestLeft();
        delay(500);
        distanceTestRight();
        delay(500);
        distanceTestFront();
        delay(500);
        if(distanceLeft <= 20 && distanceRight <= 20){
          turnBack();
          delay(400);
          turnRightOriginal();
          delay(800);
          turnStop();
          delay(100);
        }
        else if(distanceLeft > distanceRight){
          turnLeft();
          delay(500);
          turnStop();
          delay(100);
        }
        else if(distanceRight > distanceLeft){
          turnRight();
          delay(500);
          turnStop();
          delay(100);
        }
      }
    }
    else
      turnForward();
  }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值