一、实验目的

  1. 了解 Arduino 单片机的基本知识和编程方法;
  2. 掌握避障智能小车的控制方法;
  3. 掌握超声波测距传感器的使用方法;
  4. 实现避障智能小车的运动控制。

二、实验器材

  1. Arduino 单片机开发板;
  2. 超声波测距传感器;
  3. L298N 电机驱动模块;
  4. 直流电机;
  5. 杜邦线。

三、实验原理

  1. 超声波测距传感器的工作原理:将发射的超声波照射到目标物体上,当超声波遇到物体后会反射回来,传感器接收到反射回来的超声波信号后,根据时间计算出超声波的传播距离,从而实现测距。

  2. L298N 电机驱动模块的工作原理:L298N 电机驱动模块是一种双路直流电机驱动模块,可以控制两个直流电机的正反转和速度。

  3. 避障智能小车的控制方法:通过超声波测距传感器检测前方障碍物的距离,根据距离控制小车的行驶方向和速度,实现避障。

四、实验步骤

  1. 将 L298N 电机驱动模块连接到 Arduino 单片机开发板上,连接电机和超声波传感器。
  2. 编写 Arduino 程序,实现小车的控制。
  3. 将程序上传到 Arduino 单片机中,启动小车进行测试。

五、程序代码

#include <NewPing.h>

#define TRIG_PIN 9
#define ECHO_PIN 10
#define MAX_DISTANCE 200

#define ENA 3
#define IN1 5
#define IN2 6
#define IN3 7
#define IN4 8
#define ENB 4

NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  pinMode(ENA, OUTPUT);
  pinMode(ENB, OUTPUT);
}

void loop() {
  int distance = sonar.ping_cm();

  if (distance > 10) {
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
    analogWrite(ENA, 200);
    analogWrite(ENB, 200);
  } else {
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, LOW);
    analogWrite(ENA, 0);
    analogWrite(ENB, 0);
    delay(1000);
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
    analogWrite(ENA, 200);
    analogWrite(ENB, 200);
    delay(1000);
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, HIGH);
    analogWrite(ENA, 200);
    analogWrite(ENB, 200);
    delay(1000);
  }
}

六、实验结果

运行程序后,小车可以依据超声波传感器检测到的距离自动避开障碍物,实现避障功能。

Arduino 避障智能车实验报告(含详细代码)

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

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