Arduino 避障智能车实验报告(含详细运行代码)
实验目的
基于 Arduino 开发一个避障智能小车,能够自主避开障碍物。
实验器材
- Arduino 开发板
- 电机驱动模块
- 超声波距离传感器
- 直流电机
- 电池盒
- 麦克风
实验原理
超声波传感器能够测量出小车前方的障碍物距离,根据距离的变化来判断小车应该向左还是向右转向。电机驱动模块可以控制小车的前进、后退、左右转向。通过编写 Arduino 程序,实现小车自主避障。
实验步骤
- 将超声波距离传感器连接到 Arduino 开发板上,其中 VCC 接 5V、GND 接 GND、Trig 接 D2、Echo 接 D3。
- 将电机驱动模块与 Arduino 开发板连接,其中 ENA 接 D5、ENB 接 D6、IN1 接 D7、IN2 接 D8、IN3 接 D9、IN4 接 D10。
- 将直流电机与电机驱动模块相连,其中 M1 接 OUT1、OUT2,M2 接 OUT3、OUT4。
- 将电池盒连接到电机驱动模块的电源接口上。
- 编写下面的 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 开发板、电机驱动模块和超声波距离传感器等组件的组合,可以实现一个简单的避障智能小车。
原文地址: https://www.cveoy.top/t/topic/nXtV 著作权归作者所有。请勿转载和采集!