專注電子技術學習與研究
當前位置:單片機教程網(wǎng) >> MCU設計實例 >> 瀏覽文章

單片機+超聲波實時測距

作者:李俊軒   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2013年07月18日   【字體:

  本文講的是通過超聲波測試距離,并把所測到的數(shù)據(jù)實時顯示在LCD1602上的,當所測到的距離小于10CM時,LED燈將會點亮,這個程序的應用性比較強,可用于測距,測速,清洗,焊接,碎石、殺菌消毒等。在醫(yī)學、軍事、工業(yè)、農(nóng)業(yè)上有很多的應用。在逃避障礙物時可以感應到,日常比較覺的應用有:計算人流量。人到水龍頭前自動出水,智能小車避障,機器人系統(tǒng),燈的感應等。最近剛想做一部智能小車,我想到時候應用它就更好不過了,^-^ 當然,有時候也可以用紅外線等其它感應器代替。下面介紹的是超聲波關于燈的感應實驗。

我寫的代碼:
下面是代碼:
#include <LCD4Bit_mod.h>
LCD4Bit_mod lcd = LCD4Bit_mod(2);
int inputPin=15; 
int outputPin=16;
int ledPin = 17;
void setup() {
 pinMode(inputPin, INPUT);
 pinMode(outputPin, OUTPUT);
 pinMode(ledPin,OUTPUT);
 lcd.init();
 lcd.clear();
 lcd.cursorTo(1, 0);
 lcd.printIn("www.geeetech.com");
 
}
void display(int number,unsigned char address)
{
 unsigned char a,b,c,d;
    if(number <100)
 digitalWrite(ledPin,LOW);
 if(number >=100 )
 digitalWrite(ledPin,HIGH); 
 a=(number/1000);
 b=(number/100)%10;
 c=(number/10)%10;
 d=number%10;
 lcd.commandWrite(0x80+address);
 lcd.print(a+48);
 lcd.print(b+48);
 lcd.print(c+48);
 lcd.print(46);
 lcd.print(d+48);
 lcd.print(99);
 lcd.print(109);
}
void loop() {
 digitalWrite(outputPin, LOW);
 delayMicroseconds(2);
 digitalWrite(outputPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(outputPin, LOW);   
 float distance = pulseIn(inputPin, HIGH); 
 distance= distance/5.8;  
 lcd.cursorTo(2, 0); 
 lcd.printIn("Distance:");
 display(distance,0x49);
 
 }
下面是實際的效果,因為之前做視頻的時候在趕著時間,所以做出來效果不是很好,不過具體的還是可以看出來的。
 
關閉窗口

相關文章