基于arduino的避障智能车控制的实验报告包括代码
实验目的:
使用Arduino控制智能小车,实现避障功能。
实验原理:
小车上通过超声波测距模块,实时测量前方障碍物距离,并根据距离大小调整小车行驶方向,从而实现避障。
实验材料:
-
Arduino控制板
-
超声波测距模块
-
L298N电机驱动模块
-
小车底盘
-
电源线、杜邦线等
实验步骤:
-
将超声波测距模块连接至Arduino控制板,其中VCC连接至5V电源,GND连接至GND端口,Trig连接至数字口12,Echo连接至数字口11。
-
将L298N电机驱动模块连接至Arduino控制板,其中IN1、IN2、IN3、IN4分别连接至数字口8、9、10、11,ENA和ENB分别连接至数字口5和6。
-
将小车底盘上的电机连接至L298N电机驱动模块上。
-
编写Arduino代码,实现避障功能。
-
将代码上传至Arduino控制板。
-
将小车上电,观察小车是否能够避开障碍物。
实验代码:
#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向前
}
}
实验结果:
小车能够根据前方障碍物距离实时调整行驶方向,成功实现避障功能
原文地址: https://www.cveoy.top/t/topic/eGAM 著作权归作者所有。请勿转载和采集!