以下是代码实现:

//定义引脚
const int leftSensor = A0;
const int rightSensor = A1;
const int leftMotor1 = 2;
const int leftMotor2 = 3;
const int rightMotor1 = 4;
const int rightMotor2 = 5;

//定义变量
int leftValue = 0;
int rightValue = 0;
int count = 0;

void setup() {
  //初始化引脚
  pinMode(leftSensor, INPUT);
  pinMode(rightSensor, INPUT);
  pinMode(leftMotor1, OUTPUT);
  pinMode(leftMotor2, OUTPUT);
  pinMode(rightMotor1, OUTPUT);
  pinMode(rightMotor2, OUTPUT);
}

void loop() {
  //读取传感器数值
  leftValue = analogRead(leftSensor);
  rightValue = analogRead(rightSensor);

  //判断是否检测到黑线
  if (leftValue < 500 && rightValue < 500) {
    //未检测到黑线,直行
    digitalWrite(leftMotor1, HIGH);
    digitalWrite(leftMotor2, LOW);
    digitalWrite(rightMotor1, HIGH);
    digitalWrite(rightMotor2, LOW);
  } else if (leftValue < 500 && rightValue > 500) {
    //左边检测到黑线,右转
    digitalWrite(leftMotor1, HIGH);
    digitalWrite(leftMotor2, LOW);
    digitalWrite(rightMotor1, LOW);
    digitalWrite(rightMotor2, HIGH);
    delay(500);
    //计数器加一
    count++;
  } else if (leftValue > 500 && rightValue < 500) {
    //右边检测到黑线,左转
    digitalWrite(leftMotor1, LOW);
    digitalWrite(leftMotor2, HIGH);
    digitalWrite(rightMotor1, HIGH);
    digitalWrite(rightMotor2, LOW);
    delay(500);
    //计数器加一
    count++;
  }

  //计数器为4时开始沿墙运动
  if (count == 4) {
    digitalWrite(leftMotor1, HIGH);
    digitalWrite(leftMotor2, LOW);
    digitalWrite(rightMotor1, LOW);
    digitalWrite(rightMotor2, HIGH);
  }
}

代码中,我们首先定义了引脚和变量。然后在 setup() 函数中初始化引脚。接着在 loop() 函数中读取传感器数值,并根据检测到的黑线进行相应的运动。当左右两侧都检测到黑线时,会进行左右转弯,并且计数器加一。当计数器为4时,小机器人开始沿墙运动,即右转后直行,始终保持右侧检测到黑线。

需要注意的是,代码中的 analogRead() 函数返回的数值范围是0-1023,我们通过设定500作为阈值来判断是否检测到黑线。同时,由于小机器人转弯时需要一定的时间,我们通过 delay() 函数来控制转弯时间

我们将通过Arduino IDE 写一个代码使小机器人可以进行循迹运动。具体表现为:在地面传感器未检测到黑线时直行两边同时感应到黑线时第一次左转 第二次右转第三次左转第四次右转。右转后开始沿墙运动

原文地址: https://www.cveoy.top/t/topic/fHH8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录