前言
学习超声波传感器基本原理,并利用超声波传感器模块实现在给定的有效范围内实现报警。该模块可运用在倒车报警、靠近报警、危险距离靠近报警等
注:当然也可以做一个赛博木鱼
一、实验目的
使用Arduino uno 及超声波传感器(HC-SR04)模块实现在有效范围内报警。
二、实验材料
1.硬件
Arduino uno 开发板、超声波传感器(HC-SR04)模块、面包板、杜邦线、蜂鸣器、LED、电阻
2、软件
Arduino IDE 、Fritizing
三、实验模块简介
HC-SR04使用说明:https://pdf1.alldatasheetcn.com/datasheet-pdf/download/1132203/ETC2/HC-SR04.html
测距原理:如图所示,同初中物理学过一样。波由物体发出后碰撞到另一物体后发射回来,接收装置接受。此过程波往返一次,路程为距离的二倍。
四、模块搭建
注:如图所示,声光均为低电平触发。
五、程序
// 设定SR04连接的数字引脚
const int trigPin = 5; //设置接受引脚
const int echoPin = 6; //设置发射引脚
float sound_spd=343;//声速初始值
float distance; //距离
//设定声、光装置的报警引脚
int beepPin = 4;
int ledPin = 7;
void setup()
{
// 初始化串口通信及连接SR04的引脚
Serial.begin(9600); //设置波特率
pinMode(trigPin, OUTPUT);
// 要检测引脚上输入的脉冲宽度,需要先设置为输入状态
pinMode(echoPin, INPUT);
Serial.println("Ultrasonic sensor:");
//设置声光引脚
pinMode(beepPin, OUTPUT);
digitalWrite(beepPin, HIGH);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
}
void loop()
{
// 产生一个10us的高脉冲去触发TrigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
//产生高脉冲前线产生2us低脉冲,确保高脉冲的纯净
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 检测脉冲宽度,并计算出距离
distance = pulseIn(echoPin, HIGH)/ 58.00;
if(distance<50 ){
//此时为警报距离,触发声光报警装置
digitalWrite(beepPin, LOW);
delay(10);
digitalWrite(beepPin, HIGH);
delay(20);
digitalWrite(ledPin, LOW);
delay(10);
digitalWrite(ledPin, HIGH);
delay(20);
//此时为警报距离,输出报警距离
Serial.print("警报 距离:");
Serial.print(distance);
Serial.print("cm");
Serial.println();
delay(50);
} else{
Serial.print("安全 距离:");
Serial.print(distance);
Serial.print("cm");
Serial.println();
delay(50);
}
Serial.print(distance);
}
六、实验现象
实验现象
实验现象
串口输出