在开始教程之前,首先需要准备以下材料:
一、硬件:
-Arduino UNO开发板
- L298N电机驱动模块
- 超声波传感器
- 两个直流电机
- 4个轮子
- 电池盒和电池
- 面包板和杜邦线
二、软件:
- Arduino IDE
接下来,需要连接硬件电路。首先,将L298N电机驱动模块连接到Arduino UNO开发板。
连接方式如下:
1、 将L298N电机驱动模块的IN1、IN2、IN3和IN4引脚分别连接到Arduino UNO开发板的数字引脚8、9、10和11。
2、 将L298N电机驱动模块的ENA和ENB引脚连接到Arduino UNO开发板的数字引脚5和6。
3、 将电池盒的正极和负极分别连接到L298N电机驱动模块的+12V和GND引脚。
4、 将两个直流电机分别连接到L298N电机驱动模块的OUT1和OUT2以及OUT3和OUT4引脚。
5、 将超声波传感器的VCC引脚连接到Arduino UNO开发板的5V引脚,GND引脚连接到GND引脚,Trig引脚连接到数字引脚2,Echo引脚连接到数字引脚3。
接下来,我们需要编写代码。以下是代码示例:
//智能循迹避障小车
// 定义引脚
#define ENA 5
#define ENB 6
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
#define trigPin 2
#define echoPin 3
// 定义变量
int distance;
int speed = 200;
void setup() {
// 初始化引脚
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
// 发送超声波信号
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 接收超声波信号
distance = pulseIn(echoPin, HIGH) / 58;
// 判断距离
if (distance > 0 && distance < 20) {
// 避障
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, speed);
analogWrite(ENB, speed);
} else {
// 循迹
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, speed);
analogWrite(ENB, speed);
}
// 输出距离
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
}
三、主要思路
通过超声波传感器获取前方障碍物的距离,如果距离小于20厘米,则小车会停下并向左转,以避免碰撞。如果距离大于等于20厘米,则小车会向前行驶,同时保持在黑色线路上行驶。
最后,将代码上传到Arduino开发板上,然后将小车放在黑色线路上,它就会自动行驶了。