1. 程式人生 > >Arduino系列之超聲波測距模塊代碼(一)

Arduino系列之超聲波測距模塊代碼(一)

digital 工作原理 aso bsp out 就是 接收 功能 float

這裏我將簡單介紹超聲波測距模塊

SR04超聲波傳感器:

是利用超聲波特性檢測距離的傳感器,其帶有兩個超聲波探頭,分別用作於發射和接收超聲波。範圍在3-450cm。

工作原理:

超聲波發射器向某一方向發射超聲波,在發射的同時開始計時;

超聲波在空氣中傳播,途中遇到障礙物則立即返回,超聲波接收器收到反射波則立即停止計時。

聲波在空氣中傳播速度為340m/s,根據計時器記錄時間t,即可算出發射點距離障礙物的距離S,

即S=340m/s*t/2,這就是所謂的時間差測距法。

超聲波模塊的使用及時序圖:

使用Arduino的數字引腳給SR04模塊的Trig引腳至少10us的高電平信號,觸發SR04模塊的測距功能。

觸發測距功能後,模塊會自動發送八個40khz的超聲波脈沖,並自動檢測是否有信號返回。

若有信號返回,則Echo引腳會輸出高電平,高電平持續的時間就是超聲波從發射到返回的時間。

此時可以使用pluseIn()函數獲取測距結果,並計算出據被測物體的實際距離。

代碼:

const int ting=2; //設定SR04連接到Arduino引腳

const int echo=3; //設定SR04連接到Arduino引腳

float distance; //定義一個浮點型的變量

void setup()

{

Serial.begin(9600); //設置波特率

pinMode(ting,OUTPUT); //連接SR04的引腳

pinMode(echo,INPUT); //設置輸入狀態

Serial.println("ultrasonic sensor"); //

}

void loop()

{

digitalWrite(ting,LOW); //產生一個10US的高脈沖去觸發Trigpin

delayMicroseconds(2);

delayMicroseconds(10);

digitalWrite(ting,LOW);

distance=pluseIn(echo,HIGH)/58.00; //檢測脈沖寬度,並計算出距離

Serial.print(distance); //打印

Serial.print("cm"); //打印

serial.println(); //打印

delay(1000);

}

Arduino系列之超聲波測距模塊代碼(一)