首页资讯科技 蓝桥杯树莓派模拟题解析三:“电子测距仪”

蓝桥杯树莓派模拟题解析三:“电子测距仪”

牟晓东本文以模拟题“电子测距仪”为例,进行题目解析。第三题“电子测距仪”(难度系数3,25个计分点):在日常生活中,我们经常会需要测量距离,电子测距仪作为一种测距设备,可以很方便地帮助我们测出距离,现制作一个简易的电子测距仪。硬件准备:1个…

牟东

本文以模拟题“电子测距仪”为例进行问题分析。

第三题“电子测距仪”(难度系数3,25计分点):

在日常生活中,我们经常需要测量距离。作为一种测距设备,电子测距仪可以帮助我们方便地测量距离。本文制作了一个简单的电子测距仪。硬件准备:

1个按键模块[连接到25号插脚],1个数码管[连接到IIC接口],1个超声波传感器[连接到专用超声波接口],几条Du-Bang线。

编程实现:

(1)程序开始时,数码管不显示;

(2)按键被按住时,数码管显示当前设备测试的距离值(只显示整数部分),显示的距离范围为2-400cm;

(3)当测量距离大于400或小于2cm时,数码管显示4个零;

(4)释放按键时,数码管不会显示;

(5)这种循环。判断标准:

3:实现“编程实现”中的(1);

5:实现“编程实现”中的(2);

7:实现“编程实现”中的(3);

5:实现“编程实现”中的(4);

5分:完全符合题意。1.检查问题

“电子测距仪”的关键考点是使用分支选择结构的嵌套,将超声波传感器检测到的不同范围距离值在数码管上进行显示;另外,还必须要特别注意数码管的使用前设置(如先关闭再调节亮度等),以及如何单独控制各个数字位的数据显示。

“电子测距仪”的重点测试点是利用分支选择结构的嵌套,在数码管上显示超声波传感器探测到的不同范围的距离值;另外,在使用前一定要特别注意数码管的设置(比如调节亮度前先关机等。),以及如何分别控制每个数字的数据显示。

(1)常用的HC-SR04超声波传感器有效范围为2-400cm,数码管最多能显示四位数字;因此,题目中的要求(2)实际上只用到了右边的1、2、3号低阶谢妮管,左边的0号处于“空空闲”状态。

(2)超声波传感器测距返回值为9位小数,输出到数码管显示前必须四舍五入;还需要把这个三位数逐一“分解”成百位、十位、个位数,分别输出到数码管的1号、2号、3号。这一步是这道题的难点,需要用数学中“除法”和“取余数”相结合的运算方法来实现。

(3)对于按键的编程控制部分,应该使用语句“获取25号按键的测试结果”,返回的结果为0和1,分别对应“释放”和“按下”状态。2.实验设备的安装

根据题目要求,将按键模块连接到25号的三个管脚上;超声波传感器有四个管脚,连接到专用接口(扩展板的20号和21号);将数码管的四个管脚(VCC、GND、SCL、SDA)接入IIC接口(向上列);最后,打开Raspberry Pi并启动操作系统(如图1所示)。3.编程实现“电子测距仪”

(1)进入平台编程环境

访问古德微型机器人平台(www.gdwrobot.cn)。

(2)数码管的“预处理”

数码管必须“关闭”才能调用,标题(4)也明确有“放开键不显示”的要求;由于谢妮管需要逐个关闭,为了减少代码数量,此时应建立“关闭谢妮管”功能,谢妮管0-3应按顺序关闭。同时在程序开始调用该函数后,增加一条语句“将0号数码管的亮度设置为1”。

(3)构建“外层”分支选择结构。

建立一个变量“key”,赋给它值“获取25号按钮的测试结果”;然后建立“if … execute … otherwise …”的分支选择结构,判断变量“key”的值是否为1。如果是,则处于“按下”状态,准备实现题目中(2)和(3)的要求;如果不是(值为0),关闭数码管显示,实现题目中(4)的要求。

(4)构建“内层”分支选择结构。

如果判断按键处于“按下”状态,则建立变量“距离”,赋值为“超声波测距”,增加“get integer”处理后调试信息的LOG区输出;然后构造“如果…执行…否则…”的分支选择结构,判断超声波测量的距离值是否在2-400cm的正常测量范围内;如果没有,用“设置0/1/2/3数码管显示0”四个语句控制4个0的显示,实现题目(3)的要求;是,建立变量“百”、“十”和“单”:

给变量“百位数”赋一个“距离除以100”的值,取出三位数的最高位;

变量“十位数”赋值为“距离除以100”,然后取余数,再将余数除以10”;

变量“单位”被赋值为“距离除以10 ”,然后取商的余数。

最后使用三组“设置1/2/3数码管显示百/十/位”,其中“和显示点0”表示控制不显示数码管中的小数点。

(5)完善细节。

将相关语句按照题目要求放置于“重复当真”的循环结构中,在循环体内的两层分支选择结构的最后均添加一条“等待0.1秒”语句,防止循环过快(如图2)。

根据题目要求,将相关语句放在“重复真值”的循环结构中,并在循环体中两层分支选择结构的末尾增加一条“等待0.1秒”语句,防止循环过快(如图2)。

4.调试程序

在平台编程环境中点击“连接设备”,正常的话再点击“运行”按钮,对照题目中的各种情况进行多次测试,包括程序开始和按键松开时“数码管不显示”、按键按下并且按住时的正常测距范围(2-400cm)显示实际测量值与超范围时显示4个0(如图3),均实现了题目要求。

在平台编程环境中点击“连接设备”,正常后点击“运行”按钮,根据题目中的各种情况进行多次测试,包括程序启动,松开按键时“数码管不显示”,按键按下并按住时实测值显示在正常范围内(2-400cm),超出范围时显示四个零(如图3),均符合题目要求。

最后按要求将程序保存为“03.txt”,下载上传到考试系统。5.程序“升级”

代码仍然可以在两个地方重写和“升级”:

一是不建立变量“按键”,直接在外层分支选择结构中将“获取25号按钮检测结果”作为判断条件,因为该返回值只有0和1,与按键的“松开”与“按下”是对应的——数值“1”在很多编程语言中都是表示逻辑真;二是将数码管显示0的四行语句从主程序中去除,将它们增加至新函数“数码管显示0”中,虽然在主程序中只调用一次,但整体的简洁性会更好(如图4)。

第一,变量“key”不成立,在外分支选择结构中直接用“得到25号按钮的检测结果”作为判断条件,因为返回值只有0和1,分别对应键的“释放”和“按下”——值“1”在很多编程语言中表示逻辑真;二是将数码管显示0的四行语句从主程序中删除,添加到新功能“数码管显示0”中。虽然在主程序中只调用一次,但整体的简明性会更好(如图4)。

再次运行程序也能满足题目的要求。

本文来自网络,不代表管理窝立场。转载请注明出处: https://www.guanliwo.com/a/zx/26796.html
上一篇分治算法
下一篇 娱乐学习两不误,春节假期来助力
管理窝

作者: 管理窝

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部