- UID
- 373967
- 帖子
- 9008
- 主題
- 2609
- 精華
- 0
- 積分
- 1003
- 楓幣
- 0
- 威望
- 980
- 存款
- 35891
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1205
- 閱讀權限
- 70
- 在線時間
- 460 小時
- 註冊時間
- 2023-1-12
- 最後登入
- 2024-12-22
|
Arduino 超聲波測距儀專題,這個專題需要以下材料:
Arduino UNO
超聲波模組 (HC-SR04)
杜邦線數根
麵包板
下面是腳位接點:
將 VCC 和 GND 接到麵包板的 + 和 - 行上
Trig 接到 Arduino 的 9 腳位
Echo 接到 Arduino 的 10 腳位
下面是程式碼:
#define trigPin 9
#define echoPin 10
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
long distance = duration / 58.2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
這個程式碼使用了 pulseIn 函數來計算超聲波從發射到接收所經過的時間,然後再將時間轉換為距離(公分)。
當你上傳程式碼後,打開序列監視器,你會看到類似下面的輸出:
Distance: 10 cm
Distance: 20 cm
Distance: 30 cm
...
這些數據代表了超聲波模組到障礙物的距離
如果你想要更好地展示距離,你可以把上面的 Serial.print 改成下面這個程式碼:
String spaces = " "; // 20個空格,用來對齊距離
void loop() {
// 程式碼不變
Serial.print("Distance: ");
Serial.print(distance);
Serial.print(" cm");
Serial.println(spaces.substring(0, (20 - String(distance).length()))); // 填充空格
delay(500);
}
這個程式碼使用了 substring 函數來生成一個指定長度的空格字符串,這個字符串的長度會和距離的位數相關。這樣,每次輸出的距離數據就會更好看了。
如果你想要進一步提高這個專題的功能,你可以添加一個蜂鳴器,讓它在距離過近的時候發出警報聲。這樣就可以用這個專題來製作一個簡單的距離警報器了。 |
|