当前位置:首页Arduino > 正文

arduino黑线循迹小车程序

作者:野牛程序员:2023-07-11 08:10:07Arduino阅读 2722

下面是一个简单的Arduino黑线循迹小车程序的示例:

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

void setup() {
  // 设置引脚模式
  pinMode(leftMotor1, OUTPUT);
  pinMode(leftMotor2, OUTPUT);
  pinMode(rightMotor1, OUTPUT);
  pinMode(rightMotor2, OUTPUT);
  pinMode(leftSensor, INPUT);
  pinMode(rightSensor, INPUT);
}

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

  // 判断循迹小车的位置
  if (leftValue < 500 && rightValue < 500) {
    // 黑线丢失,停止
    stopCar();
  } else if (leftValue < 500 && rightValue >= 500) {
    // 左侧丢失,向右转
    turnRight();
  } else if (leftValue >= 500 && rightValue < 500) {
    // 右侧丢失,向左转
    turnLeft();
  } else {
    // 在黑线上,直行
    moveForward();
  }
}

// 小车停止
void stopCar() {
  digitalWrite(leftMotor1, LOW);
  digitalWrite(leftMotor2, LOW);
  digitalWrite(rightMotor1, LOW);
  digitalWrite(rightMotor2, LOW);
}

// 小车前进
void moveForward() {
  digitalWrite(leftMotor1, HIGH);
  digitalWrite(leftMotor2, LOW);
  digitalWrite(rightMotor1, HIGH);
  digitalWrite(rightMotor2, LOW);
}

// 小车向左转
void turnLeft() {
  digitalWrite(leftMotor1, LOW);
  digitalWrite(leftMotor2, HIGH);
  digitalWrite(rightMotor1, HIGH);
  digitalWrite(rightMotor2, LOW);
}

// 小车向右转
void turnRight() {
  digitalWrite(leftMotor1, HIGH);
  digitalWrite(leftMotor2, LOW);
  digitalWrite(rightMotor1, LOW);
  digitalWrite(rightMotor2, HIGH);
}

请注意,上述示例程序假设循迹小车的电机控制是通过引脚2、3、4和5进行控制的,并且使用模拟引脚A0和A1读取左右传感器的值。如果硬件配置不同,需要相应地修改引脚号码。

此外,示例程序中使用了一个简单的阈值(500)来判断传感器的读数是在黑线上还是丢失了黑线。可能需要根据实际传感器和环境进行适当的调整。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击