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-超声波测距仪(附项目源码、库文件、电路图、材料清单等资料)相关推荐

  1. VUE项目练习大全(附github源码)

    vue慢慢的成为了前端最受欢迎的框架之一,在很多项目之中开发都能用得到,如今也已经发展到3.0了,可能是因为这个框架可以提高工作效率,因此受到大家的追捧,在之前的文章里面也说过,2019年,大前端学习 ...

  2. 基于Java的项目物业管理系统(附:源码课件)

    项目背景: 在最近几年,我国的物业管理行业发生了极其飞速的发展.物业管理行业有客户众多.系统设备繁杂.覆盖范围巨大的特点,针对这些特点,建立一个优秀的物业管理系统,动态的管理物业并整合优化各种相关资源 ...

  3. 基于Java的项目人力资源管理系统【附:源码课件】

    项目背景 近年来,随着国内市场需求不断扩大,企业之间的竞争也在逐渐加剧.为了实现长期盈利,以及占领更多市场份额的目标,许多企业开始将重心放在对内部的管理上,加强对人力资源的管理是很多企业关注的重点.本 ...

  4. springboot+dubbo+redis+RabbitMQ 项目整合实例【附完整源码】

    往期精选 ●  卸磨杀驴!程序员心中的悲愤与无奈 ●  2018.06.27阿里云宕机50分钟 ●  程序员/架构师/技术经理/技术总监是干什么的 ●  记一次内存溢的出分析经历--带给我的痛苦 ●  ...

  5. 项目实战:51单片机超声波水位控制器设计 (源码+PCB+原理图与实物制作)全套资料

    51单片机超声波水位控制器设计 说明: 本设计中液晶显示有4个字母,分别为 H------容器的最高水位设定值(不能高于实际高度) L------容器的最低水位设定值 D-----容器实际高度(可以设 ...

  6. 最新崔庆才Python3爬虫入门到精通课程视频 附软件+源码+资料

    课程目录: 第一阶段: 环境配置 第1课:Python3+Pip环境配置 第2课:MongoDB环境配置 第3课:Redis环境配置 第4课:MySQL的安装 第5课:Python多版本共存配置 第6 ...

  7. 基于SSM的旅游景点门票管理系统,高质量毕业论文范例(可直接使用),附送源码和数据库脚本,项目导入运行视频教程,论文撰写教程

    目录 1.项目技术栈 2.适合对象 3.适合课题 4.项目功能概述 4.1 功能汇总 4.2 功能介绍 5.高质量论文范例 6.毕业设计撰写视频教程 7.部分运行截图 1.项目技术栈 前端必学三个基础 ...

  8. 用机器学习进行学生成绩预测的数据分析(入门向 附可用源码)

    用机器学习进行学生成绩预测的数据分析(入门向 附可用源码) 声明 思路 检查数据 图像化处理 分析 相关性分析 构建模型 代码实现 可运行代码 声明 文章代码修改于kaggle博主DIPAMVASAN ...

  9. 实战|Python轻松实现动态网页爬虫(附详细源码)

    用浅显易懂的语言分享爬虫.数据分析及可视化等干货,希望人人都能学到新知识. 项目背景 事情是这样的,前几天我公众号写了篇爬虫入门的实战文章,叫做<实战|手把手教你用Python爬虫(附详细源码) ...

最新文章

  1. selenium中javascript调试
  2. 【建站系列教程】6、.htaccess文件的url重写规则-网页伪静态化
  3. tmux的使用方法和个性化配置
  4. 利用vgg预训练模型提取图像特征
  5. MapReduce基础开发之十三FileSystem实现本地文件上传
  6. C#PDF转Word
  7. 分布式部署携程Apollo构建配置中心
  8. 19年8月 字母哥 第六章 生命周期内的拦截过滤与监听 用热点公司网不行
  9. 【JavaScript】编写一个炫彩的网页时钟
  10. 2021-10-25 Vue异步操作
  11. fcn+caffe+siftflow实验记录
  12. SQL Server中数据透视表的Python脚本
  13. Refactoring Game Entities with Components
  14. 如何进行在线Post接口测试?
  15. 运算放大器权威指南(Op Amps for Everyone)
  16. PS更改显示的尺寸单位
  17. Class6-Image Segmentation
  18. 如何升级pycharm 中pip的版本
  19. R语言中dim函数_R语言中的方差分析方法汇总
  20. Detect-SLAM阅读笔记

热门文章

  1. SSM源码分析之23种设计模式(策略模式和模板模式)
  2. Linux的一些简单命令操作,好懂易学(1)
  3. 我也玩android了
  4. mc服务器对硬盘有要求吗,我的世界电脑配置要求是什么_我的世界电脑配置要求高吗_玩游戏网...
  5. BZOJ 3698(XWW的难题-上下界网络流+经典建模)
  6. eval函数 c语言,matlab中eval函数的用法
  7. 54. 流编辑器sed技术概览
  8. YouTube大转型:视频红人靠粉丝会员创收 不再依赖广告
  9. 金山快盘 linux,WPS移动版5.5发布 支持金山快盘双向读写
  10. 中移动收购米雷康姆在巴基斯坦子公司剩余股份