Lab10
Ultrasonic Sensor 超音波測距感測器 HC-SR04
[材料]
Arduino主板 x 1
麵包板 x 1
HC-SR04超音波感測器 x 1
LCD(含有i2c的晶片) x 1
[HC-SR04腳位]
Vcc --> 5V
Trig --> pin 9
Echo --> pin 10
Gnd --> GND
程式碼
/* Lab10 Ultrasonic Sensor 程式碼*/
/* Ultrasonic Sensor接線方式
Vcc --> 5V
Trig --> pin 9
Echo --> pin 10
Gnd --> GND
*/
int trigPin = 9;
int echoPin = 10;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); //trigPin發出訊號
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
float duration = pulseIn(echoPin, HIGH); //echoPin多久之後才接收訊號的時間,單位microsecond
float distance = (duration/1000000 * 347)/2 *100; //來回距離=(時間*速度),聲速V=331+0.6T
Serial.print("Distance=");
Serial.println(distance);
delay(100);
}
[基本問題]
1. 距離所測量出來的單位是?
2. 聲音的速度和溫度的關係:V=331+0.6T,請計算
27℃時,聲速=?
20℃時,聲速=?
3. 請改寫程式,以避免過大的錯誤數據。
提示:可參考Lab4的「if」語法,只顯示正確範圍的數據。
4. 將資料顯示在LCD上:第一行顯示 Dis=
5. 比較用尺量測的長度,和超音波偵測的長度是否相符?有多少誤差?
[挑戰問題]
1. 能偵測的"最短"和"最遠距離"大約是多少?
2. 能偵測的"最小解析角度"是多少?