实验目的

基于 Arduino 开发一个避障智能小车,能够自主避开障碍物。

实验器材

  • Arduino 开发板
  • 电机驱动模块
  • 超声波距离传感器
  • 直流电机
  • 电池盒
  • 麦克风

实验原理

超声波传感器能够测量出小车前方的障碍物距离,根据距离的变化来判断小车应该向左还是向右转向。电机驱动模块可以控制小车的前进、后退、左右转向。通过编写 Arduino 程序,实现小车自主避障。

实验步骤

  1. 将超声波距离传感器连接到 Arduino 开发板上,其中 VCC 接 5V、GND 接 GND、Trig 接 D2、Echo 接 D3。
  2. 将电机驱动模块与 Arduino 开发板连接,其中 ENA 接 D5、ENB 接 D6、IN1 接 D7、IN2 接 D8、IN3 接 D9、IN4 接 D10。
  3. 将直流电机与电机驱动模块相连,其中 M1 接 OUT1、OUT2,M2 接 OUT3、OUT4。
  4. 将电池盒连接到电机驱动模块的电源接口上。
  5. 编写下面的 Arduino 程序,并上传到 Arduino 开发板上。

实验代码

#include <NewPing.h>

#define TRIGGER_PIN 2 //触发管脚
#define ECHO_PIN 3 //回波管脚
#define MAX_DISTANCE 200 //最大测距距离,单位:厘米

#define ENA 5 //A电机使能端口
#define IN1 7 //A电机IN1端口
#define IN2 8 //A电机IN2端口
#define ENB 6 //B电机使能端口
#define IN3 9 //B电机IN3端口
#define IN4 10 //B电机IN4端口

NewPing sonar(TRIGGER_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 <= 30) { //小于30cm时,开始避障
    digitalWrite(ENA, LOW); //关闭A电机
    digitalWrite(ENB, LOW); //关闭B电机
    delay(500); //停顿0.5秒
    digitalWrite(IN1, LOW); //A电机向后转
    digitalWrite(IN2, HIGH);
    digitalWrite(IN3, HIGH); //B电机向前转
    digitalWrite(IN4, LOW);
    delay(1000); //转动1秒
    digitalWrite(IN1, HIGH); //A电机向前转
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW); //B电机向后转
    digitalWrite(IN4, HIGH);
    delay(1000); //转动1秒
  } else { //大于30cm时,直行
    digitalWrite(IN1, HIGH); //A电机向前转
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, HIGH); //B电机向前转
    digitalWrite(IN4, LOW);
    digitalWrite(ENA, HIGH); //打开A电机
    digitalWrite(ENB, HIGH); //打开B电机
  }
}

实验结果

小车能够自主避开障碍物,遇到障碍物时能够自动停下并转向避开。

实验结论

通过 Arduino 开发板、电机驱动模块和超声波距离传感器等组件的组合,可以实现一个简单的避障智能小车。

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

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

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