赞
踩
在开始教程之前,首先需要准备以下材料:
-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开发板上,然后将小车放在黑色线路上,它就会自动行驶了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。