2635| 2
|
第12课 测距仪 |
第12课测距仪 星火课程团队 欢迎来到树莓派课堂。今天我们以超声波测距为例,结合数码管,来做一个非接触技术的测距神器。 知识点: 1.认识超声波 2.数据实时显示 所需硬件: 树莓派主板,古德微扩展板,HC-SR04超声波传感器一个,TM1650四位数码管一个 测量两点间的距离你会借助哪些工具呢?直尺?卷尺?还是水平仪呢?这些都是我们常用的测距工具。随着时代的发展,人们对距离或长度测量的要求越来越高。比如最简单的“实时控制”,上面这几款测距工具就很难做到。那么什么样的测距仪可以迅速、方便、计算简单、还可以实时控制呢?我们这节课学习的超声波测距就可以满足人们的需求。首先我们先来认识一下超声波为何物? 1.认识超声波 说到超声波,我们就会想到它——对,蝙蝠。蝙蝠它可以发出超声波,并根据回声确定猎物或障碍物的位置,科学家们把这种现象叫做回声定位。而我们使用的超声波传感器其实也是利用同样的超声波测距原理。它的一只眼睛会发射超声波,另一只眼睛接收超声波,当超声波发射时它的内部开始计时,收到超声波时计时停止。我们把这段时间*超声波的速度就是超声波来回经过的距离,将这个距离除以2,就是超声波模块到障碍物的实际距离。 明白了超声波测距原理,再来了解一下我们所使用的HC-SR04超声波测距模块。它可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。它有四个针脚,在针脚旁边有标签—— VCC、Trig、Echo、Gnd,古德微扩展板为超声波传感器设置了专用接口。 现在,赶快将超声波传感器连接到你的扩展板上吧! 接线图: 完成图: 2.获取数据信号 接下来我们来获取一下超声波传感器的数据信号。登录古德微机器人平台,“智能硬件常用”模块中找到“超声波测距”积木。 我们将积木拖到脚本区,因为这块积木无法独立运行,因此还需要借助 这块积木的帮助。 去掉文本,将“超声波测距”积木嵌套在输出调试信息积木中。 目前的程序只执行一次,我们使用循环命令让其持续监测。 现在我们运行测试代码,通过右侧的观察窗口,我们可以看到,现在超声波传感器所测量的距离。(视频) 3.数码管显示 通过观测我们发现超声波测量出来的数值精确到小数点后十多位,而四位数码管仅可以显示4个数字,位数是不够的。因此这里我们就让其精确到小数点后1位。 根据我们的使用习惯,数码管上的数字通常都是靠右对齐,数码管各数字的显示如下图所示: 我们知道数码管上数字的显示只能单独设置,那么,我们如何将超声波测距获取到的数值在4位数码管上显示出来呢?我们用程序来写出每位数的取值。 还记得上节电子时钟中数码管的使用吗?这里同样我们先设置数码管的亮度。 然后,我们需要新建一个变量命名为“测距”。且赋予超声波测距的返回值。 如果超声波监测的距离小于10,那么个位也就是2号数码管取整数显示,并显示小数点。 小数点后面的1位显示变量“测距”乘以10,再除以10的余数。 加上重复执行,我们测试一下效果。(视频)距离越远数值越大,当超声波监测的距离大于10时,我们看个位,数值9已经没有变化了,但是小数它在不断变化。那么接下来我们就需要编写小于100的小数是如何显示的。 十位:“测距”整除10的得数; 个位:“测距”取整后,除以10的余数。并显示小数点 小数点后1位不变仍然是:“测距”乘以10,再除以10的余数。 禁用之前的积木,将这组积木拖放在重复执行中,测试看一下效果。(视频) 根据前面的知识积淀,对于小于1000的小数我们就更不难解决了对吧? 百位:“测距”整除100的得数; 仍然禁用之前的积木,测试看一下。(视频)在刚刚的两位数小数和三位数小数的演示中相信你一定发现了,当不足位数时,前面会用O来显示。这其实不是我们想要的。我们希望—— 当超声波传感器测量出来的距离≥100cm的时候,则按照三位数来求出各位的数字(含小数点后1位),并在数码管上显示; 当超声波传感器测量出来距离≥10cm且≤100cm的时候,则按照两位数来求出各位的数字(含小数点后1位),并在数码管上显示; 当超声波传感器测量出来距离小于10cm的时候,则按照一位数来求出各位的数字(含小数点后1位),并在数码管上显示; 以下为流程图: |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed