Arduino-超声波模块

————高于人耳能听见的声波,称为超声波。

————在空气中传播的超声波频率,大约介于20~200KHZ,但其衰减程度与频率呈正比(频率越高,传输距离越短),市面上常见的超声波模块一般在38,40,42KHZ(部分超声波清洗机,震动频率高达3MHZ)

————声波在平滑的表面容易反射,在粗超的表面,容易被吸收。但只要表面的坑洞小于表面的1/4,即可当做平滑的表面,以40KHZ为例,将无视小于2mm的坑洞。公式如下。
波 长 = 声 波 速 度 频 率 → → 344000 毫 米 / 秒 40000 H Z → → 8.6 毫 米 → → 2.15 毫 米 波长= \frac{声波速度}{频率}→→\frac{344000毫米/秒}{40000HZ}→→8.6毫米→→2.15毫米 =40000HZ344000/8.62.15

————声波在不同密度的环境中,传输速度不同。

————室温20摄氏度的环境中,声波的传输速度约344m/s(如果在水中,要比空气中快60倍)因此得到以下公式,因此也可以推算出,1cm的距离传播了58微秒。
在这里插入图片描述

————因为发射和接收,都是不同的传感器,所以声音的传播不是直线,求距离的时候需要考虑夹角。因为所设计的产品不要求太高的精度,所以文不考虑。
在这里插入图片描述
距 离 = 344 米 / 秒 X 传 播 时 间 X C o s ( ㄖ ) 2 距离=344米/秒 X \frac{传播时间XCos(ㄖ)}{2} =344/X2XCos


在Arduino中,提供了一个测量pulseIn()的函数

pulseIn(端口号,信号电平,等待截止时间); //信号电平,HIGH或LOW可选,测量高低电平的持续时间。----如果在等待时间内没有接收到声波,会返回0;
函数将传回微秒单位的时间,所以使用unsigned long型的变量。

const byte trigPin=5;    //超声波模块的触发引脚
const int echopin=6;    //超声波模块的接收脚
unsigned long d;      //存储好声波模块的持续时间

//自定义pong()函数将返回unsigned long类型的数值

unsigned long ping(){
  digitalWrite(trigPin,HIGH);    //触发脚设置为高定位
  delayMicroseconds(5);     //延时5毫秒
  digitalWrite(trigPin,LOW);    //触发脚设置为低定位
  
  return pulseIn(echopin,HIGH);   //传回高脉冲的持续时间.

}

void setup(){
  pinMode(trigPin,OUTPUT);
  pinMode(echopin,INPUT);

  Serial.begin(9600);
  Serial.println("开始");

}

void loop(){
  d=ping() / 58;
  Serial.print(d);    //显示距离
  Serial.print("cm");
  Serial.println();
  delay(1000);
}


  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值