1.Arduino入门项目1-超声波测距仪(附项目源码、库文件、电路图、材料清单等资料)
1.Arduino入门项目1-超声波测距仪
(项目源码、库文件、电路图、材料清单等可在文末获取)
设计者:STCode(公众号同名)
后台回复:入门项目1
获取完整资料
1.Arduino入门项目1-超声波测距仪(附项目源码、库文件、电路图、材料清单等资料)
①项目描述
本项目使用Arduino、超声波传感器、lcd1602液晶显示屏等器件,实现超声波传感器检测距离,通过Arduino数据分析和处理后,将距离数值显示到lcd1602液晶显示屏上。
②元件介绍
①HC-SR04超声波传感器
模块描述:
本模块性能稳定,测度距离精确。能和国外的SRF05,SRF02等超声波测距模块相媲美。模块高精度,盲区(2cm)超近,采用IO触发测距,给至少10us的高电平信号。模块自动发送8个40KHz的方波,自动检测是否有信号返回;有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间。距离=(高电平时间X声速(340m/s))/2。
技术参数:
使用电压:DC5V
静态电流:小于2mA
电平输出:高5V
电平输出:底0V
感应角度:不大于15度
探测距离:2cm-450cm
作用:
该模块在本项目中的作用为进行测距。
②lcd1602液晶显示器
模块描述:
- 标准版:LCD1602字符液晶板,主板采用全新优质 2 行 16 个字符液晶,1602液晶在应用中非常广泛,最初的1602液晶使用的是HD44780控制器,现在各个厂家的1602模块基本上都是采用了与之兼容的IC,所以特性上基本都是一致的。
- IIC版:由于Arduino的I/O口数量有限,如果直接用Arduino的I/O口直接驱动LCD1602,会占用较多的I/O口资源,也不利于连接更多的其他设备。IIC LCD1602转接板可以大大减少需要使用的IO接口,原来的1602屏需要7个IO口才能驱动起来,这个模块可以帮你节省5个IO口。对于 Arduino初学者来说,不必为繁琐复杂液晶驱动电路连线而头疼了,只需两根线就可以实现数据显示,还可以与其它IIC设备连接,可轻松实现数据的记录显示。
技术参数:
- 供电电压:+5V
- 支持I2C协议
- 具有背光灯,和对比度调节电位器
- 4线输出更简单
- 设备地址:0x27 或 0x3F或其他
作用:
本项目使用的为IIC版的lcd1602模块,原因为IIC方式节省引脚,接线比较方便。该模块在本项目中的作用为进行距离数值的显示。
③电路连接
HC-SR04 | Arduino |
---|---|
VCC | +5V |
GND | GND |
Echo | 3 |
Trig | 2 |
LCD1602 | Arduino |
---|---|
VCC | +5V |
GND | GND |
SDA | A4 |
SCL | A5 |
④源代码
#include <Wire.h> //引入库文件
#include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd(0x27,16,2); //定义lcd对象
int TrigPin = 2; //定义超声波传感器引脚
int EchoPin = 3;
float distance; //定义距离变量
void setup()
{Serial.begin(9600); //开启串口lcd.init(); //初始化lcdlcd.backlight(); //开启lcd背光pinMode(TrigPin, OUTPUT); //设置超声波传感器引脚模式pinMode(EchoPin, INPUT);lcd.setCursor(0,0); //设置光标位置lcd.print("Distance test"); //显示内容
}
void loop()
{get_dis(); //获取距离函数lcd_display(); //lcd显示函数delay(500); //延时
}void get_dis() //获取距离子函数
{digitalWrite(TrigPin, LOW);delayMicroseconds(2);digitalWrite(TrigPin, HIGH);delayMicroseconds(10);digitalWrite(TrigPin, LOW);distance = pulseIn(EchoPin, HIGH) / 58.0; Serial.print(distance);Serial.println("cm");
}void lcd_display() //lcd显示子函数
{int dis = int(distance);lcd.setCursor(0,1);if(dis >= 0 && dis < 1000){lcd.print("Dis:");lcd.print(dis);}if(dis < 100) lcd.print(' ');lcd.setCursor(8,1);lcd.print("cm");
}
关键代码解释:
LiquidCrystal_I2C lcd(0x27,16,2); //定义lcd对象
该行代码定义了lcd对象,其中0x27为该lcd1602模块的IIC地址,不同商家购买的lcd1602,其地址可能会有所不同,大部分lcd1602的IIC地址为0x27或者0x3F,可以两个地址都进行尝试,如果还是不能显示的话可以咨询商家;代码中的16表示一行有16个位,2表示一共有两行。(还有其他型号的lcd,其显示的行数和列数可以不相同,但是能用同一个库文件,比如lcd2004A等。)
distance = pulseIn(EchoPin, HIGH) / 58.0;
将距离算成厘米,声音的速度340m/s或29us/cm,脉冲传播出来再折返回来,所以所求对象的距离行程为(高电平时间)/29/2,即/58.
if(dis >= 0 && dis < 1000){lcd.print("Dis:");lcd.print(dis);}
因为在测距的时候,偶尔会出现测出大于1000cm的情况,正常情况下,HC-SR04的测距在200cm以内,所以大于三位数的数值肯定是不正常的,因此在此做一个限制,在0-1000数值以内的值才会进行显示。
if(dis < 100) lcd.print(' ');
在显示大于三位数的距离数值时,占用了lcd1602的三个位,因此三个位上都有数据,但是当距离变为两位数时,由于在代码中没有编写清屏的语句,因此在显示了两位数时,第三位会仍然显示之前显示的数值,对测距数值形成一定的干扰,因此在这里,当测距为两位数时,在后边显示一个’ ',即显示一个空格,这样就可以覆盖掉之前显示三位数时的个位数数值。
更多创意作品及源码获取欢迎关注公众号:STCode
后台回复:入门项目1
1.Arduino入门项目1-超声波测距仪(附项目源码、库文件、电路图、材料清单等资料)相关推荐
- VUE项目练习大全(附github源码)
vue慢慢的成为了前端最受欢迎的框架之一,在很多项目之中开发都能用得到,如今也已经发展到3.0了,可能是因为这个框架可以提高工作效率,因此受到大家的追捧,在之前的文章里面也说过,2019年,大前端学习 ...
- 基于Java的项目物业管理系统(附:源码课件)
项目背景: 在最近几年,我国的物业管理行业发生了极其飞速的发展.物业管理行业有客户众多.系统设备繁杂.覆盖范围巨大的特点,针对这些特点,建立一个优秀的物业管理系统,动态的管理物业并整合优化各种相关资源 ...
- 基于Java的项目人力资源管理系统【附:源码课件】
项目背景 近年来,随着国内市场需求不断扩大,企业之间的竞争也在逐渐加剧.为了实现长期盈利,以及占领更多市场份额的目标,许多企业开始将重心放在对内部的管理上,加强对人力资源的管理是很多企业关注的重点.本 ...
- springboot+dubbo+redis+RabbitMQ 项目整合实例【附完整源码】
往期精选 ● 卸磨杀驴!程序员心中的悲愤与无奈 ● 2018.06.27阿里云宕机50分钟 ● 程序员/架构师/技术经理/技术总监是干什么的 ● 记一次内存溢的出分析经历--带给我的痛苦 ● ...
- 项目实战:51单片机超声波水位控制器设计 (源码+PCB+原理图与实物制作)全套资料
51单片机超声波水位控制器设计 说明: 本设计中液晶显示有4个字母,分别为 H------容器的最高水位设定值(不能高于实际高度) L------容器的最低水位设定值 D-----容器实际高度(可以设 ...
- 最新崔庆才Python3爬虫入门到精通课程视频 附软件+源码+资料
课程目录: 第一阶段: 环境配置 第1课:Python3+Pip环境配置 第2课:MongoDB环境配置 第3课:Redis环境配置 第4课:MySQL的安装 第5课:Python多版本共存配置 第6 ...
- 基于SSM的旅游景点门票管理系统,高质量毕业论文范例(可直接使用),附送源码和数据库脚本,项目导入运行视频教程,论文撰写教程
目录 1.项目技术栈 2.适合对象 3.适合课题 4.项目功能概述 4.1 功能汇总 4.2 功能介绍 5.高质量论文范例 6.毕业设计撰写视频教程 7.部分运行截图 1.项目技术栈 前端必学三个基础 ...
- 用机器学习进行学生成绩预测的数据分析(入门向 附可用源码)
用机器学习进行学生成绩预测的数据分析(入门向 附可用源码) 声明 思路 检查数据 图像化处理 分析 相关性分析 构建模型 代码实现 可运行代码 声明 文章代码修改于kaggle博主DIPAMVASAN ...
- 实战|Python轻松实现动态网页爬虫(附详细源码)
用浅显易懂的语言分享爬虫.数据分析及可视化等干货,希望人人都能学到新知识. 项目背景 事情是这样的,前几天我公众号写了篇爬虫入门的实战文章,叫做<实战|手把手教你用Python爬虫(附详细源码) ...
最新文章
- selenium中javascript调试
- 【建站系列教程】6、.htaccess文件的url重写规则-网页伪静态化
- tmux的使用方法和个性化配置
- 利用vgg预训练模型提取图像特征
- MapReduce基础开发之十三FileSystem实现本地文件上传
- C#PDF转Word
- 分布式部署携程Apollo构建配置中心
- 19年8月 字母哥 第六章 生命周期内的拦截过滤与监听 用热点公司网不行
- 【JavaScript】编写一个炫彩的网页时钟
- 2021-10-25 Vue异步操作
- fcn+caffe+siftflow实验记录
- SQL Server中数据透视表的Python脚本
- Refactoring Game Entities with Components
- 如何进行在线Post接口测试?
- 运算放大器权威指南(Op Amps for Everyone)
- PS更改显示的尺寸单位
- Class6-Image Segmentation
- 如何升级pycharm 中pip的版本
- R语言中dim函数_R语言中的方差分析方法汇总
- Detect-SLAM阅读笔记
热门文章
- SSM源码分析之23种设计模式(策略模式和模板模式)
- Linux的一些简单命令操作,好懂易学(1)
- 我也玩android了
- mc服务器对硬盘有要求吗,我的世界电脑配置要求是什么_我的世界电脑配置要求高吗_玩游戏网...
- BZOJ 3698(XWW的难题-上下界网络流+经典建模)
- eval函数 c语言,matlab中eval函数的用法
- 54. 流编辑器sed技术概览
- YouTube大转型:视频红人靠粉丝会员创收 不再依赖广告
- 金山快盘 linux,WPS移动版5.5发布 支持金山快盘双向读写
- 中移动收购米雷康姆在巴基斯坦子公司剩余股份