超声波传感器

超声波测距

const int TrigPin = 0;//D3
const int EchoPin = 4;//D2
float distance;//距离
  void setup()
{ // 初始化串口通信及连接SR04的引脚
  Serial.begin(115200);//波特率设置为115200
  pinMode(TrigPin, OUTPUT);//将Trig设为输出模式
  pinMode(16, OUTPUT);//将D0设置为输出模式
// 要检测引脚上输入的脉冲宽度,需要先设置为输入状态
  pinMode(EchoPin, INPUT);//将Echo设置为输入模式
  Serial.println("超声波传感器:");
}
  void loop()
{
 // 产生一个10us的高脉冲去触发TrigPin
  digitalWrite(TrigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(TrigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin, LOW);
// 检测脉冲宽度,并计算出距离
  distance = pulseIn(EchoPin, HIGH) / 58.00;
      
/*
	#################为什么要除58呢?################
	
	声音在干燥、摄氏 20度的空气中的传播速度大约为343米/秒,合34,300厘米/秒。
    或者,我们作一下单位换算,34,300除以1,000,000厘米/微秒。
    即为:0.0343厘米/微秒
    再换一个角度,1/(0.0343 厘米/微秒)

    即:29.15 微秒/厘米。
    这就意味着,每291.5微秒表示10CM的距离。1厘米就是29.15微秒。
    但是发送后到接收到回波,声音走过的是2倍的距离呀。
    所以实际距离就是1厘米,对应58.3微秒。
    实际上整个测距过程是测的发出声波到收到回波的时间,你的程序里的第一个distance实际上是时间	us。
    所以换成距离cm,要除以58。当然除以58.3可能更精确。

*/      

  if(distance<=10){
      digitalWrite(16,HIGH);
    }
  else{
      digitalWrite(16,LOW);
    }
   
  Serial.print(distance);
  Serial.print("cm");
  Serial.println();
  
  delay(100);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Antgeek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值