[英]Ultrasonic Sensor HC-SR04 + Arduino Calculation?
我正在使用此代碼:
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.