任务2:汽车倒车提示电路安装
一、任务描述
汽车倒车时,根据不同的距离出现声光提示。通过本项目的学习,掌握超声波传感器的测距原理和使用方法。利用超声波传感器和Arduino开发板,制作一个倒车提示电路。
【预期效果】
二、任务规划
环节1:超声波传感器距离测量
环节2:超声波传感器测距灯光指示
环节3: 循迹小车倒车提示程序调试
任务2 循迹小车倒车提示
【材料、工具和设备】
Arduino UNO开发板1块,超声波传感器模块1只,蜂鸣器1只,LED3只,面包板1块、连接导线若干
环节1 超声波传感器距离测量
一、控制要求
t是超声波返回的时间,d是测得的距离,在串口监视器读取距离的数值。
二、测距原理
观看测距原理视频,回答问题:
1、HC-SR04超声波模块都是使用 Hz的声波。
2、小组展示:d是距离,t是超声波发射到返回的时间,声音在空气中传播,距离用厘米表示的时候,为何 d = t * 0.017?
三、距离测量电路安装
按下面的电路图安装元器件并接线。
【超声波接线说明】
四、距离测量程序调试
1、编写程序并存储到指定文件夹。
void setup() {
// 初始化串口
Serial.begin(9600);
pinMode(8, OUTPUT);
pinMode(9, INPUT);
}
void loop() {
digitalWrite(8, LOW);
delayMicroseconds(2);
digitalWrite(8, HIGH);
delayMicroseconds(10);
digitalWrite(8, LOW);
unsigned long t = pulseIn(9, HIGH);
float d = t * 0.017;
Serial.println(d);
delay(500);
}
2、编译程序,传输到Arduino,通电运行,观察运行结果,读取数值。
环节2 超声波传感器测距灯光指示
一、控制要求
t是超声波返回的时间,d是测得的距离,大于20cm,指示灯亮,小于20cm指示灯不亮。同时在串口监视器读取距离的数值。
2、根据视频中的程序,超声波传感器测距LED指示电路中传感器与Arduino的连接应该是:
环节3 循迹小车倒车提示
一、倒车灯光提示
【控制要求】
小车与障碍物距离大于15cm,所有灯不亮; 10cm-15cm绿灯闪(响0.5ms停0.5ms); 5-10cm,黄灯闪;小于5cm,红灯闪。
【接线】8——Trig, 9——Echo,3——绿灯,4——黄灯,5——红灯,6——蜂鸣器
二、倒车声光提示
【程序修改要求】
倒车雷达声音提示和3个灯显示。大于距离大于15cm,蜂鸣器不响,所有灯不亮; 10cm-15cm慢响(响0.5ms停0.5ms),绿灯闪; 5-10cm,蜂鸣器快速响,黄灯闪; 小于5cm,蜂鸣器快速响,红灯闪)
下面程序中未加入蜂鸣器,读懂程序,在原来程序基础上增加蜂鸣器,写出程序。
【电路】
【调试预期效果】
一、声波速度与空气温度的关系
声波传播速度与传播介质的温度成正比,与传输介质的密度成正比。声波在1个标准大气压下的传播速度与空气温度的关系为:
v = 331.5 + 0.607t
v 为声波的速度,单位m/s
t 为空气的温度,单位℃
空气中的声音传播速度在1个标准大气压和15℃的条件下约为340米/秒。
二、测距原理
HC-SR04超声波模块常用于机器人避障、物体测距、液位检测、公共安防、停车场检测等场所。HC-SR04超声波模块主要是由两个通用的压电陶瓷超声传感器,并加外围信号处理电路构成的。
HC-SR04超声波模块都是使用40kHz的声波,人耳可辨识的声音频率范围在20~ 20kHz。使用电压DC 5V,静态电流小于2mA,感应角度不大于15度,探测距离2cm~450cm。
给Trig提供一个10us以上的脉冲触发信号,模块内部自动发送8个40kHz的超声波;Echo输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
测量距离= (时间*声速 )/ 2
在一个标准大气压,15℃时空气中的声速是 340m/s 。
【教学视频】
三、超声波测距程序调试
【教学视频】
【参考程序】
void setup() {
// 初始化串口
Serial.begin(9600);
pinMode(8, OUTPUT);
pinMode(9, INPUT);
}
void loop() {
digitalWrite(8, LOW);
delayMicroseconds(2);
digitalWrite(8, HIGH);
delayMicroseconds(10);
digitalWrite(8, LOW);
unsigned long t = pulseIn(9, HIGH);
float d = t * 0.017;
Serial.println(d);
delay(500);
}
四、超声波传感器测距灯光指示
【电路】
【教学视频】
【参考程序】
void setup() {
Serial.begin(9600);
pinMode(3, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, INPUT);
}
void loop() {
digitalWrite(8, LOW);
delayMicroseconds(2);
digitalWrite(8, HIGH);
delayMicroseconds(10);
digitalWrite(8, LOW);
unsigned long t = pulseIn(9, HIGH);
float d = t * 0.017;
Serial.println(d);
delay(500);
if(d>15){
digitalWrite(3, LOW);
}
else {
digitalWrite(3, HIGH);
delay(500);
}
}
五、循迹小车倒车提示程序调试
【教学视频】
【参考程序】
// 8—Trig, 9—Echo,3—绿灯,4—黄灯,5—红灯,6—蜂鸣器
void setup() {
Serial.begin(9600);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, INPUT);
}
void loop() {
digitalWrite(8, LOW);
delayMicroseconds(2);
digitalWrite(8, HIGH);
delayMicroseconds(10);
digitalWrite(8, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
unsigned long t = pulseIn(9, HIGH);
float d = t * 0.017;
Serial.println(d);
delay(500);
if (d > 15) {
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
else if (d <= 15 & d > 10) {
digitalWrite(3, HIGH);
delay(500);
digitalWrite(3, LOW);
delay(500);
}
else if (d <= 10 & d > 5) {
digitalWrite(4, HIGH);
delay(200);
digitalWrite(4, LOW);
delay(200);
}
else {
digitalWrite(5, HIGH);
delay(100);
}
}