Arduino循迹机器人:实现左右转弯和沿墙运动

本项目将带你使用Arduino IDE编写代码,让你的机器人能够进行循迹运动。机器人将根据地面传感器检测到的黑线进行动作:

  • 未检测到黑线时直行
  • 两边同时感应到黑线时,交替进行左转和右转
  • 右转后开始沿墙运动

以下是完整的Arduino代码:

// 定义引脚
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);
  }
}

代码解析:

  1. 定义引脚和变量: 首先,我们定义了传感器和电机驱动引脚,以及用于存储传感器数值和转弯次数的变量。
  2. 初始化: 在setup()函数中,我们将所有引脚设置为输入或输出模式。
  3. 读取传感器: 在loop()函数中,我们使用analogRead()函数读取左右传感器的模拟值,并将其存储在leftValuerightValue变量中。
  4. 判断动作: 根据传感器数值,我们判断机器人应该直行、左转还是右转。如果左右传感器都检测到黑线,则根据计数器count的值决定左转还是右转。
  5. 沿墙运动: 当计数器count达到4时,机器人开始沿墙运动,即始终保持右侧检测到黑线。

注意事项:

  • analogRead()函数返回的值范围为0-1023,你需要根据实际情况调整代码中的阈值500。
  • delay()函数用于控制机器人转弯的时间,你可以根据需要调整延迟时间。

通过学习这段代码,你可以了解如何使用Arduino控制机器人进行简单的循迹运动。你可以根据自己的需求修改代码,例如添加避障功能或更复杂的运动模式。

Arduino循迹机器人:实现左右转弯和沿墙运动

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

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