实验目的:

使用Arduino控制智能小车,实现避障功能。

实验原理:

小车上通过超声波测距模块,实时测量前方障碍物距离,并根据距离大小调整小车行驶方向,从而实现避障。

实验材料:

  1. Arduino控制板

  2. 超声波测距模块

  3. L298N电机驱动模块

  4. 小车底盘

  5. 电源线、杜邦线等

实验步骤:

  1. 将超声波测距模块连接至Arduino控制板,其中VCC连接至5V电源,GND连接至GND端口,Trig连接至数字口12,Echo连接至数字口11。

  2. 将L298N电机驱动模块连接至Arduino控制板,其中IN1、IN2、IN3、IN4分别连接至数字口8、9、10、11,ENA和ENB分别连接至数字口5和6。

  3. 将小车底盘上的电机连接至L298N电机驱动模块上。

  4. 编写Arduino代码,实现避障功能。

  5. 将代码上传至Arduino控制板。

  6. 将小车上电,观察小车是否能够避开障碍物。

实验代码:

#include <AFMotor.h> //调用AFMotor库

int trigPin = 12; //超声波测距模块Trig连接的数字口
int echoPin = 11; //超声波测距模块Echo连接的数字口
long duration;
int distance;
AF_DCMotor motor1(1); //定义电机对象
AF_DCMotor motor2(2);

void setup()
{
  Serial.begin(9600); //设置串口波特率为9600
  pinMode(trigPin, OUTPUT); //Trig设置为输出模式
  pinMode(echoPin, INPUT); //Echo设置为输入模式
  motor1.setSpeed(200); //设置电机转速
  motor2.setSpeed(200);
}

void loop()
{
  digitalWrite(trigPin, LOW); //发射超声波前,先将Trig置为低电平
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH); //将Trig置为高电平,发射超声波
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW); //将Trig置为低电平

  duration = pulseIn(echoPin, HIGH); //读取Echo引脚的高电平脉冲时间
  distance = duration * 0.034 / 2; //计算距离,单位为厘米

  Serial.print("Distance: "); //在串口监视器中输出距离值
  Serial.println(distance);

  if (distance < 10) { //当距离小于10厘米时,小车执行避障操作
    motor1.run(BACKWARD); //电机1后退
    motor2.run(BACKWARD); //电机2后退
    delay(1000); //后退1秒
    motor1.run(FORWARD); //电机1向前
    delay(1000); //向前1秒
  }
  else { //当距离大于等于10厘米时,小车直行
    motor1.run(FORWARD); //电机1向前
    motor2.run(FORWARD); //电机2向前
  }
}

实验结果:

小车能够根据前方障碍物距离实时调整行驶方向,成功实现避障功能

基于arduino的避障智能车控制的实验报告包括代码

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

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