热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

超声波测距仪编程_Arduino轻松学Mixly编程第9课超声波测距仪

轻松学Lesson9超声波测距仪1.课程简介本节课以超声波测距仪为例,为大家讲解超声波测距的原理及基于IIC通讯协议的LCD液晶屏的使用。本节课所需硬件:

轻松学Lesson9超声波测距仪

1.课程简介

本节课以超声波测距仪为例,为大家讲解超声波测距的原理及基于IIC通讯协议的LCD液晶屏的使用。

本节课所需硬件:Arduino UNO、IO扩展板、LCD显示器、超声波测距模块

Lesson-9.png (143.02 KB, 下载次数: 12)

2019-4-29 17:12 上传

2.本节知识点

设备初始化

LCD液晶显示器使用

*脉冲宽度检测

3. Mixly模块

初始化

3.1 初始化.png (10.21 KB, 下载次数: 7)

2019-4-29 17:12 上传

模块位置:“控制”栏

模块功能:初始化设备及变量。

该模块对应的Arduino程序的setup()函数,该函数内的命令在设备通电启动后仅执行一次,所以通常在此函数内进行设备初始化、串口通讯频率、端口模式等设定操作。

变量声明虽然可以放到该模块内,但在实际的Arduino代码,变量声明语句并不在setup()函数内。具体内容会在慕课最后一节中讲解。

LCD初始化

3.2 LCD初始化.png (34.53 KB, 下载次数: 7)

2019-4-29 17:12 上传

模块位置:“显示器”栏

模块功能:设定显示器类型,初始化LCD,建立IIC通讯。

1602:课程套件中所用的显示器类型,两行显示,每行16个字符。除此之外还有2004型,即4行显示,每行20字符。

ArduinoUNO板的时钟总线为A5端口,数据总线为A4端口,不可更改。

0x20为课程所用套件的LCD液晶屏IIC地址,第三方的IIC协议LCD液晶屏地址默认为0x27,可以通过短接屏幕背面接口板上的A0、A1、A2接口调整IIC地址。

液晶显示屏功能设置

3.3 液晶屏设置.png (7.83 KB, 下载次数: 6)

2019-4-29 17:12 上传

模块位置:“显示器”栏

模块功能:设置液晶显示屏的功能,如屏幕开、关、光标显示、背光闪烁、清屏等操作。

液晶屏内容显示

3.4 内容显示.png (15.31 KB, 下载次数: 7)

2019-4-29 17:11 上传

模块位置:“显示器”栏

模块作用:设定显示的内容及内容首字母的行、列位置。行数自下而上数,列数为自左向右数。

超声波测距

3.5 超声波测距.png (14.75 KB, 下载次数: 8)

2019-4-29 17:11 上传

模块位置:“传感器”栏

模块功能:测量超声波测距模块返回的脉冲长度信号并换算成对应距离。

文本连字符

3.6 文本连接.png (5.21 KB, 下载次数: 33)

2017-4-13 18:53 上传

模块位置:“文本”栏

模块功能:将左右两侧的字符串连接成一个字符串。

Distance为浮点型(Mixly中描述为小数类型)变量,转变为字符串,转换后的结果无法直接进行数字运算。即数字5≠字符5,符号相同,意义不同。

*脉冲宽度检测

3.7 脉冲宽度检测.png (2.89 KB, 下载次数: 37)

2017-4-13 18:53 上传

所处位置:“输入输出”栏

模块作用:检测对应管脚返回高电平的持续时间。

4.程序及流程图

程序图

4. 程序图.png (192.82 KB, 下载次数: 79)

2017-4-13 18:53 上传

流程图

4.1 流程图.jpg (21.01 KB, 下载次数: 10)

2019-4-29 17:11 上传

5.关联知识讲解

IIC协议

IIC是飞利浦公司研发的一种总线通讯协议,每条IIC总线上有一台主机,7位寻址IIC总线的最多可以同时接入127台从机,设备各自对应独立的地址信息。

主机与从机通过时钟总线和数据总线通信。Arduino UNO板的时钟总线为A5端口,数据总线为A4端口,不可更改。

超声波测距原理

套件中所使用的HC-SR04超声波测距模块可提供2cm-400cm的距离感测,测距精度可达3mm。测量过程首先向Trig端口输入持续时间10μs的高电平信号,随后拉低电平信号,测距模块会发出1组8个40KHz的脉冲信号,脉冲信号遇到障碍物后反弹,测距模块一旦接受到返回的信号,则会在Echo端口输出长度与所测距离成正比的脉冲信号,我们通过脉冲长度检测获取到信号长度,乘以声速再除以2,即可得到距离数值。

5. 测距原理.png (116.15 KB, 下载次数: 6)

2019-4-29 17:10 上传

distance=time×340m/s÷2

*脉冲宽度检测

按照上述的测距流程,程序中的距离测量也可用右侧的程序实现。两者等效。

5.2 脉冲宽度检测.png (83.58 KB, 下载次数: 9)

2019-4-29 17:10 上传

6.课堂练习

结合纸模,制作一个测距仪。

7.作业及挑战

由于显示频率,课程中的案例闪烁过快,如何实现如下稳定显示效果?

完成程序并上传程序截图及效果视频。

课程简介

《Arduino轻松学》是科技学堂制作的在线系列创客教学视频之一。《轻松学》是一套Arduino开发的基础入门课程,适合还没有过硬件开发和编程经验的人群做入门学习使用。本课程中,每节课带你制作一个趣味小项目,在学到技术的同时,也开动想象发挥创造。课程案例

《轻松学》课程中使用非常适合初学者的DFRobot的米思齐(Mixly)编程积木入门套装,软件选用图形化编程的Mixly。课程以视频+图文的呈现形式,深入浅出。既有操作演示,又方便学习者自主观看查询,轻松完成Arduino的入门学习。



推荐阅读
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • 由于同源策略的限制,满足同源的脚本才可以获取资源。虽然这样有助于保障网络安全,但另一方面也限制了资源的使用。那么如何实现跨域呢,以下是实现跨域的一些方法。 ... [详细]
  • 移动传感器扫描覆盖摘要:关于传感器网络中的地址覆盖问题,已经做过很多尝试。他们通常归为两类,全覆盖和栅栏覆盖,统称为静态覆盖 ... [详细]
  • css div中文字位置_超赞的 CSS 阴影技巧与细节
    本文的题目是CSS阴影技巧与细节。CSS阴影,却不一定是box-shadow与filter:drop-shadow,为啥?因为使用其他属性 ... [详细]
  • Windows简单部署Exceptionless
    部署准备Elasticsearch、Exceptionless.API、Exceptionless.UI、URLRewrite、.NET运行时 1、安装ElasticSearch1 ... [详细]
  • 表达式树摘录(1)
    本文主要讲述ConstantExpression介绍表示具有常量值的表达式。ParameterExpression介绍表示命名的参数表达式。UnaryExpression介绍表示包 ... [详细]
  • 开发板:FL2440内核:linux3.0无线网卡:RT3070RT3070的工作模式分为STA(station)模式、SoftAP(AccessPoint)模式两种。STA ... [详细]
author-avatar
风情万种791008
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有