我用的是这个代码:
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是从哪里来的?
我读过这份文件,但我仍然不理解脉宽的概念。
事先非常感谢!
发布于 2014-07-26 12:53:33
就像Chris在评论中提到的那样,输入引脚在发送和接收之间的时间很高。我不太确定在传输之后或传输期间,它是否会持续很高,但是您可能会在数据表上找到它。
29.1是从哪里来的?
那是空气中的声速..。你可以用它把时间转换成厘米。你必须把它除以二,因为它有两条路。
概述:
digitalWrite(trigPin,HIGH);、delayMicroseconds(1000);和digitalWrite(trigPin,LOW);。Arduino测量信号引脚的长度很高:
duration = pulseIn (echoPin,HIGH); https://stackoverflow.com/questions/24960780
复制相似问题