我正在使用此代码:
int trigPin = 7;
int echoPin = 8;
void setup() {
Serial.begin(9600);
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
}
void loop() {
int duration;
int distance;
digitalWrite(trigPin,HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin,LOW);
duration = pulseIn (echoPin,HIGH);
distance = (duration/2)/29.1;
Serial.print("distance = ");
Serial.println (distance);
delay(500);
}
我了解在这种情况下发送1000微秒脉冲并等待反射信号的概念。但是我不明白在这段代码中如何仅将反射信号的脉冲宽度用于计算。
我四处搜寻,他们说反射的脉冲宽度与行进的距离成正比。有人可以解释这是如何发生的(其背后的物理原理)以及29.1的来源吗?
我阅读了本文档,但我仍然不了解脉冲宽度的概念。
提前谢谢了!
就像克里斯在评论中提到的那样,输入引脚在发送和接收之间的时间内变为高电平。我不确定传输后或传输期间是否在一定时间内变高,但是您可能能够在数据表上找到它。
29.1来自哪里?
那就是空气中的声音速度...您可以使用它将时间转换为厘米。您必须将其一分为二,因为它有两种方式。
回顾:
digitalWrite(trigPin,HIGH);
,delayMicroseconds(1000);
及digitalWrite(trigPin,LOW);
。Arduino以此来测量信号引脚为高电平的长度:
duration = pulseIn (echoPin,HIGH);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句