天天看點

子產品初探:HC-SR04超音波測距子產品感應燈

好久沒有更新關于Arduino方面的文章了,其實前幾天一直在做,不過實作的功能都比較單一,也沒有什麼新奇的想法。也由于沒錢的原因,來來去去也就隻能圍着一個小燈棒轉,紅外遙控、藍牙遠端控制、人體紅外感應、紅外避障傳感,各種各樣的去驅動點亮小燈棒。不過比較之後,除了藍牙和紅外,超音波測距子產品是最為理想的傳感方式了。

  人體紅外感應子產品雖然最符合人來即亮,人走即滅的理念,但是靈敏度真的是太低,聽說有算法解決的算法,但是最後也沒有琢磨出來。最後幾天将紅外避障子產品用做感應器,效果還是相當不錯的,特别是靈敏度,紅外以光的速度傳播,絲毫沒有延遲。美中不足的是,紅外避障子產品的最大感應距離上限40cm不到,而且線性的紅外光在經過一些小空隙,比如說手指間的時候,也會觸發低電平資訊,導緻燈熄滅。

  而超音波測距子產品就克服了兩者的不足,此子產品最大感應距離可以達到3m左右,并且超音波發出也有一個音波的廣角,實驗效果還是比較理想的。

  下面是制作一個超音波測距子產品為感應器,繼電器為動作執行器的感應LED燈棒。實作的功能為:當30cm内有物體時,給繼電器發送一個高電平,并持續3秒,3秒後如果物體依然存在在30cm範圍内,繼續輸出高電平,反之則輸出一個低電平,由此來控制繼電器的通斷。

子產品原理

子產品初探:HC-SR04超音波測距子產品感應燈

通過子產品說明文檔可知,給Arduino闆的數字接口接上超音波測距傳感器後,程式開始Trig口會想子產品發送一個10μs長的高電平信号,此時子產品開始工作,發射器發出8個40KHz的超音波脈沖,同時内部計時器開始運作。當超音波脈沖遇到障礙物後立即傳回,接收器接收到傳回脈沖的同時會從Echo口向Arduino發送一個持續高電平,高電平持續的時間即為超音波從發射到被接收的時間。然後再通過聲速與時間的關系,進而測出被測物體與子產品的距離。

我給程式添加了一個輸出的序列槽,這個序列槽能實時輸出障礙物距離,通過距離的測定,規定如果障礙物與子產品距離小于30cm,則觸發數字引腳4輸出一個高電平,并持續3s。而引腳4我連接配接了一個繼電器,使用繼電器的通斷來實作LED燈管的點亮與熄滅。

材料準備

  1. Arduino UNO 開發闆。
  2. Arduino IDE 1.81。
  3. 超音波測距子產品。
  4. 面包線、面包闆。
  5. LED燈管。

線路連接配接

繼電器我使用了外接電源供電,隻将信号端口插在Arduino上:

繼電器針腳:

DC+ -> 5V

DC- -> GND

IN -> 4

使用高電平觸發。

超音波測距子產品:

VCC -> 5V

GND -> GND

Trig -> 2

Echo -> 3

效果示範

http://player.youku.com/player.php/sid/XMjY1ODczNzk3Mg==

源代碼

const int TrigPin = 2; 
const int EchoPin = 3; 
const int jdqPin = 4;
float distance; 
void setup() 
{   // 初始化序列槽通信
     Serial.begin(9600); 
     pinMode(TrigPin, OUTPUT); 
     pinMode(jdqPin, OUTPUT); 
     pinMode(EchoPin, INPUT);
     Serial.println("Load Distance:");
} 
void loop() 
{ 
    // 高脈沖去觸發TrigPin 
     digitalWrite(TrigPin, LOW); 
     delayMicroseconds(2); 
     digitalWrite(TrigPin, HIGH); 
     delayMicroseconds(10);
     digitalWrite(TrigPin, LOW); 
    //計算出距離
     distance = pulseIn(EchoPin, HIGH) / 58.00;
     Serial.print(distance); 
     Serial.print(" cm"); 
     Serial.println(); 
     delay(100); //序列槽輸出距離結果的頻率
     if(distance<30){
         digitalWrite(jdqPin,HIGH);
     }
     else
         digitalWrite(jdqPin,LOW);
     delay(3000);
}
           

繼續閱讀