专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

单片机+超声波实时测距

作者:李俊轩   来源:本站原创   点击数:  更新时间:2013年07月18日   【字体:

  本文讲的是通过超声波测试距离,并把所测到的数据实时显示在LCD1602上的,当所测到的距离小于10CM时,LED灯将会点亮,这个程序的应用性比较强,可用于测距,测速,清洗,焊接,碎石、杀菌消毒等。在医学、军事、工业、农业上有很多的应用。在逃避障碍物时可以感应到,日常比较觉的应用有:计算人流量。人到水龙头前自动出水,智能小车避障,机器人系统,灯的感应等。最近刚想做一部智能小车,我想到时候应用它就更好不过了,^-^ 当然,有时候也可以用红外线等其它感应器代替。下面介绍的是超声波关于灯的感应实验。

我写的代码:
下面是代码:
#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);
 
 }
下面是实际的效果,因为之前做视频的时候在赶着时间,所以做出来效果不是很好,不过具体的还是可以看出来的。
 
关闭窗口

相关文章