/*
// 超音波測身高(距離)
*/
#define trigPin 12 // Trig Pin // 發射端
#define echoPin 14 // Echo Pin // 接收端
double t = 20.0; // 攝氏溫度 20
void setup() {
Serial.begin (115200);
pinMode(trigPin, OUTPUT); // Define inputs and outputs
pinMode(echoPin, INPUT);
}
void loop(){
double cm = readUltrasound();
Serial.printf("Distance : %lf cm \n", cm);
delay(1000);
}
double readUltrasound(){
// 發出超音波(TRIG)
digitalWrite(trigPin, LOW); // 關閉 Trig
delayMicroseconds(5);
digitalWrite(trigPin, HIGH); // 給 Trig 高電位,持續 10 微秒
delayMicroseconds(10);
digitalWrite(trigPin, LOW); // 關閉 Trig
// 回音定位(ECHO)
double echoTime = pulseIn(echoPin, HIGH); //計算傳回時間(收到高電位信號持續時間(微秒))
// 將時間換算成距離
double c = 331.5 + 0.607 * t; // 海平面音速 v = 331.5 + 0.607 * t 公尺/秒 (其中 t 為攝氏溫度)
c = c * 100 / 1000000; // 將音速(公尺/秒)轉成音速(公分/微秒)
double cm = (echoTime / 2) * c; // 將時間換算成距離 cm
return cm;
}