极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1781|回复: 6

arduino实现按键控制的超声波测距,程序及连线如下,结果要比实际大得多,为什么

[复制链接]
发表于 2017-7-23 10:56:42 | 显示全部楼层 |阅读模式
const int buttonPin = 2;
const int TrigPin = 8;
const int EchoPin = 9;
int buttonState = 0;
float mm;
void setup()
{
  Serial.begin(9600);
  pinMode(TrigPin, OUTPUT);
  pinMode(EchoPin, INPUT);
  pinMode(buttonPin, INPUT_PULLUP);
}
void loap()
{
  int val = digitalRead(buttonPin);
  if  (val ==LOW)
   {
   
     digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
     delayMicroseconds(2);
     digitalWrite(TrigPin, HIGH);
     delayMicroseconds(10);
     digitalWrite(TrigPin, LOW);

     mm = pulseIn(EchoPin, HIGH) / 580.0; //将回波时间换算成cm
     Serial.print(mm);
     Serial.print("mm");
     Serial.println();
     delay(2000);
  else
   {
    digitalWrite(EchoPin, LOW);
    digitalWrite(TrigPin, LOW);
   }
}

结果

结果

连线

连线
回复

使用道具 举报

发表于 2017-7-26 21:41:23 | 显示全部楼层
超声检测不是一个点,是一个面,这个面是个15度宽的扇形,楼长说的远近是否注意到了这点。
回复 支持 0 反对 1

使用道具 举报

发表于 2017-7-23 15:01:44 | 显示全部楼层
模块不准或你的程序有问题,另外声速与空气的温度有关
回复 支持 反对

使用道具 举报

发表于 2017-7-24 11:45:26 | 显示全部楼层
看看是否接近两倍,超声波测距应该是来回距离。
回复 支持 反对

使用道具 举报

发表于 2018-1-14 09:35:33 | 显示全部楼层
mm = pulseIn(EchoPin, HIGH) / 580.0; //将回波时间换算成cm
这一句好像不对啊。
回复 支持 反对

使用道具 举报

高级模式  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2018-6-19 18:33 , Processed in 0.049315 second(s), 8 queries , File On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表