本文講的是通過(guò)超聲波測(cè)試距離,并把所測(cè)到的數(shù)據(jù)實(shí)時(shí)顯示在LCD1602上的,當(dāng)所測(cè)到的距離小于10CM時(shí),LED燈將會(huì)點(diǎn)亮,這個(gè)程序的應(yīng)用性比較強(qiáng),可用于測(cè)距,測(cè)速,清洗,焊接,碎石、殺菌消毒等。在醫(yī)學(xué)、軍事、工業(yè)、農(nóng)業(yè)上有很多的應(yīng)用。在逃避障礙物時(shí)可以感應(yīng)到,日常比較覺(jué)的應(yīng)用有:計(jì)算人流量。人到水龍頭前自動(dòng)出水,智能小車避障,機(jī)器人系統(tǒng),燈的感應(yīng)等。最近剛想做一部智能小車,我想到時(shí)候應(yīng)用它就更好不過(guò)了,^-^ 當(dāng)然,有時(shí)候也可以用紅外線等其它感應(yīng)器代替。下面介紹的是超聲波關(guān)于燈的感應(yīng)實(shí)驗(yàn)。
我寫的代碼:
下面是代碼:
#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);
}
下面是實(shí)際的效果,因?yàn)橹白鲆曨l的時(shí)候在趕著時(shí)間,所以做出來(lái)效果不是很好,不過(guò)具體的還是可以看出來(lái)的。