Arduino 避障智能车实验报告(含详细代码)
一、实验目的
- 了解 Arduino 单片机的基本知识和编程方法;
- 掌握避障智能小车的控制方法;
- 掌握超声波测距传感器的使用方法;
- 实现避障智能小车的运动控制。
二、实验器材
- Arduino 单片机开发板;
- 超声波测距传感器;
- L298N 电机驱动模块;
- 直流电机;
- 杜邦线。
三、实验原理
-
超声波测距传感器的工作原理:将发射的超声波照射到目标物体上,当超声波遇到物体后会反射回来,传感器接收到反射回来的超声波信号后,根据时间计算出超声波的传播距离,从而实现测距。
-
L298N 电机驱动模块的工作原理:L298N 电机驱动模块是一种双路直流电机驱动模块,可以控制两个直流电机的正反转和速度。
-
避障智能小车的控制方法:通过超声波测距传感器检测前方障碍物的距离,根据距离控制小车的行驶方向和速度,实现避障。
四、实验步骤
- 将 L298N 电机驱动模块连接到 Arduino 单片机开发板上,连接电机和超声波传感器。
- 编写 Arduino 程序,实现小车的控制。
- 将程序上传到 Arduino 单片机中,启动小车进行测试。
五、程序代码
#include <NewPing.h>
#define TRIG_PIN 9
#define ECHO_PIN 10
#define MAX_DISTANCE 200
#define ENA 3
#define IN1 5
#define IN2 6
#define IN3 7
#define IN4 8
#define ENB 4
NewPing sonar(TRIG_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 > 10) {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, 200);
analogWrite(ENB, 200);
} else {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
analogWrite(ENA, 0);
analogWrite(ENB, 0);
delay(1000);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, 200);
analogWrite(ENB, 200);
delay(1000);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
analogWrite(ENA, 200);
analogWrite(ENB, 200);
delay(1000);
}
}
六、实验结果
运行程序后,小车可以依据超声波传感器检测到的距离自动避开障碍物,实现避障功能。
原文地址: https://www.cveoy.top/t/topic/nXup 著作权归作者所有。请勿转载和采集!