超聲波傳感器是一種常用的測距傳感器,它利用超聲波的傳播特性進行距離測量。它通常由超聲波發射器和接收器組成。
超聲波傳感器的工作原理是:首先,超聲波發射器發送一個超聲波脈沖信號,該脈沖信號在空氣中傳播。當這個脈沖波遇到物體時,會被物體表面反射回傳感器,並被接收器接收到。接收器會將接收到的回波轉化為電信號,並通過處理電路進行處理。
通過測量發射超聲波和接收回波之間的時間差,可以計算出超聲波傳感器到物體的距離。根據聲速(通常在空氣中為約343米/秒)和時間差,可以使用簡單的速度-時間-距離公式(d = v * t)計算出實際距離。
常見的超聲波傳感器包括HC-SR04、LV-MaxSonar、Ultrasonic Ranging Module等,它們具有不同的特性和性能參數。在選擇和使用超聲波傳感器時,需要根據具體需求和應用場景進行選擇,並注意參考傳感器的說明文檔和資料進行正確的接線和設置。
const int Triger = PA2;
const int Echo = PA1;
unsigned long timeOfFlight(); //function declaration
void setup()
{
Serial.begin(115200);
pinMode(Triger, OUTPUT);
pinMode(Echo, INPUT);
}
void loop()
{
digitalWrite(Triger, LOW);
delay(2);
digitalWrite(Triger, HIGH);
delay(10);
digitalWrite(Triger, LOW);
float distance = (timeOfFlight()*0.0347)/2; //The temperature is 25℃ for the speed of sound.
Serial.print("Distance:");
Serial.print(distance);
Serial.print("cm\n");
delay(100); //Delay 100ms.
}
unsigned long timeOfFlight()
{
unsigned long startTime, endTime;
unsigned long duration;
while (digitalRead(Echo) == LOW); //Wait for the Echo pin to turn high to start timing.
startTime = micros(); //us.
while (digitalRead(Echo) == HIGH); //Wait for the Echo pin to turn low to end timing.
endTime = micros();
duration = endTime - startTime;
return duration; // return value.
}
endTime = micros();
micros()函數返回開發板開始運行當前程序時的微秒數。該數字在大約70分鐘後溢出,即回到零。
此函數返回自程序啟動後的微秒數(無符號長整型)。
現在,通過單擊頂部綠色條右側的圖標或按Ctrl+Shift+M,在Arduino IDE中打開串口監視器觀測打印的通過超聲波測出的物體距離。
Simple code works reliably. NASA's 10 golden rules for coding can be found on the public internet :)