微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机+超声波实时测距

单片机+超声波实时测距

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

我写的代码:

下面是代码:

#include

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);

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top