Arduino 避障智能车实验报告(含代码)
实验目的
本实验旨在设计一款基于 Arduino 的避障智能小车,通过超声波测距模块实现障碍物检测,并通过电机控制模块实现小车的自动避障和行进控制。
实验材料
- Arduino UNO 开发板 x1
- L298N 电机驱动板 x1
- HC-SR04 超声波测距模块 x1
- 18650 锂电池 x1
- 各种电子元器件(杜邦线,面包板,电阻,LED 灯等)
实验原理
超声波传感器是一种使用超声波进行测距的传感器。它可以通过发射超声波,并测量从传感器发出去的超声波到达障碍物并被反射回来所需的时间来计算出障碍物与传感器之间的距离。基于这个原理,我们可以使用超声波传感器来实现机器人的避障功能。
L298N 电机驱动板是一种常见的电机驱动模块,它可以控制直流电机的转速和方向。我们可以通过 L298N 电机驱动板来控制小车的移动方向和速度。
实验过程
- 将 Arduino UNO 开发板和 L298N 电机驱动板通过杜邦线连接起来。将电机驱动板的 IN1 至 IN4 引脚分别接到 Arduino UNO 开发板的数字引脚 2 至 5 上。
- 将 HC-SR04 超声波测距模块的 VCC 引脚接到 Arduino UNO 开发板的 5V 电源口,GND 引脚接到 GND 电源口,Trig 引脚接到数字引脚 6 上,Echo 引脚接到数字引脚 7 上。
- 将小车的两个直流电机通过 L298N 电机驱动板连接起来。将电机 1 的正极和负极分别接到电机驱动板的 OUT1 和 OUT2 上,将电机 2 的正极和负极分别接到电机驱动板的 OUT3 和 OUT4 上。
- 连接电源。将 18650 锂电池的正极和负极分别接到 L298N 电机驱动板的电源输入端口上。
- 编写代码并上传到 Arduino UNO 开发板中。
实验代码
//定义引脚
#define TRIG 6
#define ECHO 7
#define IN1 2
#define IN2 3
#define IN3 4
#define IN4 5
//定义变量
float distance;
int duration;
int speed = 150;
void setup() {
//设置引脚模式
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
void loop() {
//发射超声波
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
//计算距离
duration = pulseIn(ECHO, HIGH);
distance = duration * 0.034 / 2;
//判断障碍物距离,并控制小车的运动
if (distance > 20) {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(IN1, speed);
analogWrite(IN3, speed);
} else {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delay(500);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
delay(500);
}
}
实验结果
通过上传以上代码到 Arduino UNO 开发板,小车可以实现自动避障功能。当检测到前方有障碍物时,小车会自动停止并后退一段距离,然后向右转向,继续前进。当没有障碍物时,小车会直线前进。可以通过调整 speed 变量来改变小车的速度。
实验总结
本实验使用超声波测距模块和电机驱动板实现了基于 Arduino 的避障智能小车控制。通过实验,我们了解了超声波测距模块和 L298N 电机驱动板的工作原理,掌握了 Arduino 编程的基本方法,并实现了自动避障功能。
原文地址: https://www.cveoy.top/t/topic/nXra 著作权归作者所有。请勿转载和采集!