- /*
- 【Arduino】66種傳感器模塊系列實驗(58)
- 實驗五十八: HC-SR04超聲波測距傳感器模塊(通用款)
- 程序之三,串口輸出等待時間的原始數(shù)據(jù)
- Echo接Digital 3口,接收距離信號
- Trig接Arduino板的Digital 2口,觸發(fā)測距
- 上電后預熱穩(wěn)定大約需要60秒鐘
- HC-SR04為簡單通用款,沒有溫度補償,實測200CM段誤差約3CM
- */
- #define Trig 2
- #define Echo 3
-
- float cm; //距離變量
- float temp;
-
- void setup() {
- Serial.begin(9600);
- pinMode(Trig, OUTPUT);
- pinMode(Echo, INPUT);
- }
-
- void loop() {
- //給Trig發(fā)送一個低高低的短時間脈沖,觸發(fā)測距
- digitalWrite(Trig, LOW); //給Trig發(fā)送一個低電平
- delayMicroseconds(2); //等待 2微妙
- digitalWrite(Trig,HIGH); //給Trig發(fā)送一個高電平
- delayMicroseconds(10); //等待 10微妙
- digitalWrite(Trig, LOW); //給Trig發(fā)送一個低電平
-
- temp = float(pulseIn(Echo, HIGH)); //存儲回波等待時間,
- //pulseIn函數(shù)會等待引腳變?yōu)镠IGH,開始計算時間,再等待變?yōu)長OW并停止計時
- //返回脈沖的長度
-
- //聲速是:340m/1s 換算成 34000cm / 1000000μs => 34 / 1000
- //因為發(fā)送到接收,實際是相同距離走了2回,所以要除以2
- //距離(厘米) = (回波時間 * (34 / 1000)) / 2
- //簡化后的計算公式為 (回波時間 * 17)/ 1000
-
- cm = (temp * 17 )/1000; //把回波時間換算成cm
-
- Serial.print("Echo =");
- Serial.print(temp);//串口輸出等待時間的原始數(shù)據(jù)
- Serial.print(" | | Distance = ");
- Serial.print(cm);//串口輸出距離換算成cm的結果
- Serial.println("cm");
- delay(500);
- }
復制代碼
|