标题:
超声波测距程序及调试
[打印本页]
作者:
wwibe
时间:
2015-6-2 21:00
标题:
超声波测距程序及调试
const int TrigPin = 2;
const int EchoPin = 3;
float cm;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop()
{
//发一个10ms的高脉冲去触发TrigPin
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH) / 58.0; //算成厘米
cm = (int(cm * 100.0)) / 100.0; //保留两位小数
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(1000);
}
烧载完成后打开串口窗口,保证电路的接线正确,把模块平行对着被测物体,可以看到上图所示的测距距离。来看一下代码: pulseIn(EchoPin, HIGH),此函数是计算EchoPin的高电平时间,先将引脚拉高,开始计时,直到该引脚变为低电平为止,单位为ms,如果超出还没读取到的话,将返回0.
cm = pulseIn(EchoPin, HIGH) / 58.0;可能很多人会问为什么要除以58.0呢,声速是340m/s换算一下就是函数返回的值是ms,1s=1000ms,cm=t/1000*34/2=0.017*t=t/58.8,所以会有除以58.0.大家敲完代码测试出结果了是不是很高兴,但是,仔细想一想,声音要是在真空是什么情况,原来真空下声音是不能传播的,在不同温度和压强下的声速是不一样的
作者:
admin
时间:
2015-6-2 22:24
要是有图片就更好了
作者:
lizhigao
时间:
2015-6-13 10:30
再详细点就更好了
作者:
bolang0927
时间:
2015-6-16 13:48
嗯!楼主说的很对,昨天刚刚看到超声波避障,但还没有看到LCD输出显示部分。其中就讲到声音传播速度会受到温度和密度的影响,但是日常使用中也就是个大概值,误差可以忽略。
作者:
siberianbj
时间:
2015-7-2 18:58
是应该更详细些。也没有说明使用的元器件。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1