超声波测距代码_还在用卷尺测量距离吗?自制一个超声波测距仪,简单易学超实用...

506a8fad1a8ab12e0aa92fc1f86dd990.png

大家好,我是机器侠!旨在用最简单的语言,让大家学习更多的知识!

前两天要去测量一套毛胚房的相关数据,发现卷尺使用起来很是不方便。

便找了一块arduino和超声波传感器设计了超声波测距仪,用于测量距离,考虑到将arduino连接电脑显示数据显然很不可就靠。

为了不用电脑就可显示测量出来的数据,所以此次设计的测距仪通过LCD1602显示器对测量数据进行实时显示,以便使用者直接从显示屏上观察数据。

a9b48ecfbde6e6cb45201cabaffa66fd.png

超声波传感器

简单介绍下超声波测距的原理:

超声波顾名思义,它是一种超过人耳听力范围的一种声波,所以我们人耳是无法听到的,是一种频率高于20000赫兹的声波,它的特性是方向性好,穿透能力强,如今已经超声波已经广泛应用于测距、测速等方面。

超声波也是属于声音,所以它在空气中传播的速度为340m/s,可以利用时间差测距法进行距离测算,所以超声波传感器可以根据计时器记录的时间t,就可以计算出发射点距障碍物的距离s,即:s=340m/s× t / 2 。

94e40faa069120562e1c8a708638fde8.png

超声波测距原理

需要准备以下相关材料:

  1. arduino一块(此次实验我用的arduino uno,也可以使用其它型号的arduino,当然体 积越小越好,推荐用arduino por mini,价格便宜体积小,自带的端口也基本够用)
  2. USB 2.0数据线(用于arduino与电脑连接,进行程序下载和调试)
  3. 超声波传感器一个(此次实验我用的型号是HC-SR04)
  4. 显示屏一块(此次实验我用的型号是lcd1602)
  5. 杜邦线若干
  6. 9V的电池一块(包含与arduino连接的DC端口)
09da281c99c0f1a89a3b92b78f889a52.png

arduino uno

如下图所示,首先将arduino uno与超声波传感器相连接。

连接方法:

传感器电源正极VCC——5v正极

传感器触发控制端Trig——D7数字口

传感器接收端Echo——D6数字口

传感器电源地GND——5v负极

52d2df4ccbc085430bf1f27a811bf5e6.png

arduino与超声波传感器连接图

对于电子爱好者来说,基本上对液晶显示模块都不陌生。常见的液晶显示屏幕有LCD1602和LCD12864等,它们都是由若干个字符点阵位组成的,一个点阵位可以显示一个字母、数字或文字。

接下来就是将LCD1602连接到arduino uno上,LCD1602上有16个引脚,其中在于arduino uno链接时,是不需要全部接入的,如下图为LCD1602的引脚说明图。

fb6a1b26f06402db2f9371aa5e61cc92.png

lcd1602引脚说明

连接方法:

LCD1602 RS端口——D12数字口

LCD1602 E端口——D11数字口

LCD1602 D4端口——D5数字口

LCD1602 D5端口——D4数字口

LCD1602 D6端口——D3数字口

LCD1602 D7端口——D2数字口

LCD1602 BLA(背光电源正极)端口和VDD电源正极——5V正极

LCD1602 BLA(背光电源正极)端口和GND电源负极——5V负极

其它引脚滞空

bf54be50b452e4478d2b8b92b5e5f3eb.png

连接图

最后就是程序的设计,打开arduino IDE,将代码下载到arduino中,就可以实现相应的测距功能了。其中本程序加载了库函数,附上全部代码:

#include //库函数

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const int TrigPin = 7;

const int EchoPin = 6;

float cm;

void setup() {

lcd. begin(16, 2);

pinMode(TrigPin, OUTPUT);

pinMode(EchoPin, INPUT) ;

}

void loop()

{

digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin

delayMicroseconds(2);

digitalWrite(TrigPin, HIGH);

delayMicroseconds(10);

digitalWrite (TrigPin, LOW);

int timer=-500;

cm=pulseIn(EchoPin, HIGH)/58.0; //将回波时间换算成cm

cm=(int (cm*100.0))/100.0; //保留两位小数

delay(500);

if(millis()>timer +500)

{

lcd. print ("Dist:");

lcd. setCursor(6,1);

lcd. print (cm);

lcd. print ("cm ");

lcd. home();

timer=millis()+500;

}

}

附上实物图:

ef0ed0f94a3c728f9dcb9eb8fe7d2649.png

测距实物图

到此为止,一个超声波测试仪就大功告成啦,其中部分内容只是简单说明,有些新手朋友看着肯定有点吃力,不过没关系。后面会对相应的一些模块进行分开详细解释和说明。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值