Arduino-超声波测距模块

关于Arduino超声波的接法与应用

简单介绍超声波测距模块

SR04超声波传感器:

是利用超声波特性检测距离的传感器,其带有两个超声波探头,分别用作于发射和接收超声波。范围在3-450cm。

工作原理:

超声波发射器向某一方向发射超声波,在发射的同时开始计时;

超声波在空气中传播,途中遇到障碍物则立即返回,超声波接收器收到反射波则立即停止计时。

声波在空气中传播速度为340m/s,根据计时器记录时间t,即可算出发射点距离障碍物的距离S,

即S=340m/s*t/2,这就是所谓的时间差测距法。

代码:

int trigPin = 8;          //发出信号
int echoPin = 7;         //接收信号
float v = 331.5+0.6*20;// 若不考虑温度的影响,声波在空气中传播速度为340m/s

void setup() {
  
Serial.begin(115200);//设置波特率
pinMode(trigPin,OUTPUT);//设置输出状态。或者写成:pinMode(8,OUTPUT);
pinMode(echoPin,INPUT);//设置输入状态
pinMode(6,OUTPUT);//蜂鸣器pin6,输出状态

}
float distanceM()
{
  digitalWrite(trigPin,LOW);//
  delayMicroseconds(3);//延时3微秒
  digitalWrite(trigPin,HIGH);
  delayMicroseconds(5); 
 digitalWrite(trigPin,LOW); 
 
 /*float tUS = pulseIn(echoPin,HIGH);
 float t = tUs / 1000.0 / 1000.0 / 2;
 float d = t*v;
 return d*100;*/


 float d =pulseIn(echoPin,HIGH)/58.00;     //检测脉冲宽度,并计算出距离**cm.  

/*pulseIn()单位为微秒,声速340m/s,单片机的晶振频率约为14MHZ,所以距离cm=340*100/(1000000-14000)*pulseIn()/2,及化简为pulseIn()/[(1000000-14000)*2/(340*100)]等于pulseIn()/58.0.*/

 
  return d;
  
}

void loop() 
{
 while(1)
 {
 int d = distanceM();
  Serial.println(d,DEC);//BIN、OCT、HEX、DEC分别代表二、八、十六、十进制~~
  if(d>10)
  {
    digitalWrite(6,HIGH);//蜂鸣器
    delay(200);
    digitalWrite(6,LOW);
    
  }
  delay(200);
 }

}

米思齐:

猜你喜欢

转载自blog.csdn.net/Naiva/article/details/81607205