Arduino 避障智能车实验报告 (含代码)
Arduino 避障智能车实验报告 (含代码)
实验目的:
- 掌握 Arduino 的基本编程语法和基本电路原理;
- 学习使用超声波测距模块实现避障功能;
- 学习使用电机驱动模块控制电机运动。
实验材料:
- Arduino UNO 主板一块;
- 超声波测距模块一块;
- 电机驱动模块一块;
- 直流电机两个;
- 面包板一块;
- 杜邦线若干。
实验原理:
超声波测距模块原理:
超声波测距模块是一种利用超声波进行测距的装置。超声波是一种声波,其频率超过 20kHz,人耳听不到。超声波在空气中传播的速度为 340m/s。当超声波遇到障碍物时,会发生反射,反射回来的超声波经过计算,可以得到距离。超声波测距模块通过发射超声波,并记录反射回来的超声波的时间,从而计算出距离。
电机驱动模块原理:
电机驱动模块是一种用于控制电机转动的装置。电机驱动模块可以将来自 Arduino 主板的信号转换成电机可以接受的信号,从而控制电机的转动。
实验步骤:
- 将超声波测距模块和电机驱动模块连接到 Arduino 主板上。具体连接方式如下:
超声波测距模块:
- VCC —— 5V
- GND —— GND
- Trig —— D2
- Echo —— D3
电机驱动模块:
- ENA —— D5
- IN1 —— D6
- IN2 —— D7
- ENB —— D9
- IN3 —— D10
- IN4 —— D11
- VCC —— 5V
- GND —— GND
-
将两个电机连接到电机驱动模块上。
-
编写程序,实现避障功能。
代码如下:
#define ENA 5 //PWM信号输出口
#define IN1 6 //电机正转信号
#define IN2 7 //电机反转信号
#define ENB 9 //PWM信号输出口
#define IN3 10 //电机正转信号
#define IN4 11 //电机反转信号
#define Trig 2 //超声波发射信号
#define Echo 3 //超声波接收信号
int Distance; //距离变量
void setup()
{
pinMode(ENA,OUTPUT);
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(ENB,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(Trig,OUTPUT);
pinMode(Echo,INPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(Trig,LOW);
delayMicroseconds(2);
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
digitalWrite(Trig,LOW);
Distance=pulseIn(Echo,HIGH)/58; //计算距离
Serial.print("Distance:");
Serial.println(Distance);
if(Distance<=20) //如果距离小于等于20cm
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
else //否则
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
analogWrite(ENA,150); //设置电机速度
analogWrite(ENB,150);
}
- 上传代码到 Arduino 主板上,并将智能车放置在有障碍物的区域进行测试。
实验结果:
智能车可以在遇到障碍物时自动停止,并向另一个方向转动,避免碰撞。
实验结论:
本实验成功实现了基于 Arduino 的避障智能车控制。通过超声波测距模块和电机驱动模块,实现了避障功能和电机控制功能。此外,还学习了 Arduino 的基本编程语法和基本电路原理。
原文地址: https://www.cveoy.top/t/topic/nXqR 著作权归作者所有。请勿转载和采集!