木子呢 发表于 2022-11-11 10:29:02

【行空板图形化Python入门教程】第10课:肺活量测量仪

第10课 肺活量测量仪
肺活量测量是用来检测心肺功能的项目,测量的时候通常要求人深吸一口气然后对着呼气口吹气,通过检测呼出气体的体积反应心肺功能。今天我们就用行空板来模拟一个肺活量测量仪,一起来看看如何制作吧。




任务目标

按下A键,开始测量,通过对着行空板呼气模拟肺活量的检测过程,同时进度条实时显示你的肺活量达标情况;多次测量肺活量后,会显示最后三个测量数据。

注意:肺活量测量仪只是对肺活量测量过程和效果的简单模拟,并不能真的用于测量肺活量。

https://www.bilibili.com/video/BV1Kd4y1F7CA/?vd_source=27fedd3ac40d3e58da0788477833f7ac

知识点

1. 掌握程序中的列表的基础使用

2. 认识程序中的条件循环语句

3. 认识程序中的多分支条件语句

4. 掌握行空板上绘制线段的方法

5. 掌握行空板获取声音强度的方法


材料清单

1. 硬件清单


行空板x1


Type-C&Micro二合一USB线x1

2. 软件使用

Mind+编程软件x1,下载地址:https://www.mindplus.cc



动手实践

肺活量测量仪的主要功能是通过统计呼气时长来显示肺活量情况,自动记录测量数据。接下来我们就分两个任务来制作吧。

任务一:获得肺活量数据

在此任务中,我们将学习利用行空板麦克风,模拟肺活量的测量,同时通过进度条显示肺活量达标情况。

任务二:自动记录测量数据

基于已统计的肺活量数据,我们将学习列表的基本操作,记录并显示多次测量数据。


任务一:获得肺活量数据

1. 硬件搭建

使用USB连接线将行空板连接到计算机。



2. 软件准备

打开Mind+,按照下面图示完成软件准备过程。



3. 编写程序

肺活量测试的过程中需要手持测量仪并吹气,那么用行空板如何检测吹气,并获得肺活量数据呢,接下来我们一起看看吧。

(1) 获得肺活量数据

(a)判断吹气

我们是通过获取声音强度来判断人是否在吹气的,获取麦克风响度数值指令为 读取麦克风声音强度 ,你可以在指令区“行空板”分类下的“板载传感器”里寻找该指令。

注意:行空板正对你时,麦克风位于行空板上方左侧(如下图)。关于行空板麦克风知识,参见“知识园地”。





找到后,可以直接在行空板屏幕上实时显示麦克风声音强度数值,观察吹气与否的数值变化。



注意:你可以使用远程桌面连接行空板,方便观察数据变化。



数据方面,在没有吹气时,你看到的是当前环境声音强度;接着,你可以对着行空板上方有话筒图标的地方吹气,观察声音强度数值,基本上都在40以上。



没有吹气,环境声音强度



吹气,声音强度明显增加

因此,我们可以通过声音强度数值来判断现在是否有人吹气。

(b)获得肺活量数据

肺活量数据是通过人持续吹气获得,于是需要使用变量来记录持续吹气的状态,它的实现过程就变成了开始吹气后,变量持续增加,直到吹气停止。也就是说,可以通过 重复执行直到 控制 肺活量数据变量 ,持续增加,直到声音强度小于40停止收集数据。

注意: 重复执行直到 是条件循环语句,它位于指令区的“控制”分类下。关于该指令的介绍,详见“知识园地”。



至于按下A键开始测量,本节课我们要使用到的是 按钮A被按下 ,它在指令区“行空板”分类下的“板载传感器”里,如果 按钮A被按下,那么开始测量肺活量。



(2) 显示达标情况

在实际测量肺活量过程中,根据不同的年龄对应着不同的及格标准。本课项目中使用进度条来显示肺活量情况,并加入“达标线”提示测试者是否达标,下图展示了进度条的组成情况。



达标线要使用行空板“显示线段”指令 对象名 显示线段起点X0Y0终点X240Y320线宽1颜色蓝 ,在“显示矩形”指令上方,你也可以通过“线段”关键字找到它。





然后,通过进度条的组成和位置计算矩形相关参数和线段起终点坐标。需要说明的是,达标线可以根据比例来设置位置,比如表示60%的刻度,参考下图即可完成计算。



现在你就可以根据肺活量数据和进度条宽度,调整进度条的变化,当然也可以适当加入一些提示内容,完整参考代码如下:



4. 程序运行

点击运行,显示“肺活量数据”和0;按下A键,提示音响起,开始对着行空板麦克风吹气,观察进度条变化。



5. 试一试

我们现在已知进度条外框宽度为200,假设对应的肺活量数据为2000,请你动手设置当肺活量数据超过2000时,进度条不要超出外框。




任务二:自动记录测量数据

1. 编写程序

在任务一中,你已经可以测量肺活量数据,那如何把测量过的数据记录并显示出来呢?一起来学习吧。

(1) 记录测量数据

记录测试过的数据,可以使用“列表”变量来完成,你可以把“列表”理解成程序中的“表格”,相关操作指令在指令区“列表”分类下。

注意:关于“列表”知识的介绍,参见“知识园地”。



把历史数据记录进“列表”,需要先建立一个空的“列表”变量,即建立 数据表变量 并赋值为 初始化列表[] ,记得删去指令中的内容。



然后,在肺活量数据测量完成之后,将肺活量数据加入到列表。向列表加入数据的指令为 列表[]将0添加到末尾 ,使用时,将 变量数据表 和 变量肺活量数据分别填入即可。



(2) 显示测量数据

首先先建立好三个显示测试数据的对象。



接下来显示的数据内容,其实就是把列表里的数据取出来,要使用指令 列表[]索引0的值 来完成,需要说明的是,列表的索引就是列表的第几个元素,其中第一个的索引是0。



显示测量数据,一共有三种情况,第一次测量只显示第一个数据,索引为0;第二次测量显示前两个数据,索引分别为0和1;三次及以上的测量则显示最后三个数据。

具体实现上,需要使用 列表[]的长度 指令,帮助判断当前列表有几个数据,并对应更新列表数据内容。





对于第三种情况,显示列表的最后三个数据,这三个数据的索引是 列表长度 分别减1,减2,减3,你可以使用 列表[]的长度 指令获取并更新数据显示对象。



三种情况的判断需要使用可变分支条件语句 如果那么执行(带“+”号),点击两次加号,即可完成多条件语句的设置。



注意:关于多分支条件语句介绍,参见“知识园地”。

最后,完善三种情况的数据显示并给对应数据加上提示信息,本节课的案例就完成啦。完整参考代码如下:



2. 程序运行

按下A键测量肺活量,多次测量后显示最后的三个测量数据。




知识园地

1. 程序中的列表知识

列表(List)是用来存储多个数据的数据类型,其中每个数据都有一个“索引”来表示它在列表中的位置。你可以类比生活中的表格,对列表进行读取、添加、删除、修改等操作,但不同于表格的是,对于有元素的列表,通常第一个数据元素索引为0。



在Python中,列表是由“[]”构成,里面什么都没有,叫做“空列表”;若有两个或以上的数据元素,元素与元素之间需要用英文“,”间隔起来,如。

另外,列表和数字都是Python中基础的数据类型,关于Python的其它基础数据类型,如字符串、字典等,我们将在后面的课程中继续介绍。

在图形化指令中,你可以在指令区“列表”分类下找到 操作列表的指令 。比如,创建列表指令 初始化列表[] ,向后添加元素指令 列表[]将0添加到末尾 等等,你可以自己尝试或者上网查询这些指令的含义和用法。



2. 程序中的条件循环语句

条件循环语句是指 重复执行直到 ,它是循环结构语句中的一个,它的执行过程是,先判断“直到”后面的条件是否满足,如果满足就停止执行“重复执行”里的语句,它的代码执行流程可以被描述成下面右边的图片。



3. 程序中的多分支条件语句

多分支条件语句是 如果 那么执行 否则如果 那么执行 否则 语句,是条件判断语句中的一种。它通常被用来做两个以上可能性的判断,你可以点击“+”号增加判断情况,也可以点击“-”号减少判断情况。

以三种情况的判断为例,下图左边的执行过程是:判断条件1是否成立,成立就执行代码语句1,否则判断条件2是否成立,成立就执行代码语句2,否则执行代码语句3,它的代码执行流程可以被描述成下面右边的图片。



4. 行空板板载麦克风

当行空板正对你的时候,行空板板载麦克风位于行空板上方左侧。它是电容硅麦克风,小巧且灵敏度较高,可以用来获取环境中的声音。



行空板板载麦克风和加速度传感器、光线强度传感器一样,都属于板载传感器,所以你可以在“行空板”“板载传感器”分类中找到 读取麦克风声音强度 指令,获取环境音量数值。



麦克风强度数值是一个百分比值,范围为0-100。这个数值和电脑麦克风音量值一样,根据麦克风灵敏度,录入的音频响度会有一个范围,最小的可录入音量对应0,最大对应100,如果超过最大音量依然会按最大音量录入。需要说明的是,行空板板载麦克风,只可以通过百分比定性的分析音量的大小。



5. 指令学习

本项目主要使用了学习了行空板麦克风声音强度、列表操作等指令,接下来我们就详细学习一下。



该指令用于获取板载麦克风接收的声音强度数值。





该指令用于判断行空板A/B键是否被按下。





该指令用于在行空板屏幕显示线段对象,在指令中可以设置对象名、线段起终点坐标、线宽以及颜色。





该指令用于建立并初始化一个列表。





该指令用于获取列表的长度。





该指令用于在列表的尾部添加元素数据。





该指令用于获取列表第“索引”个数据。使用时需要写明列表和索引内容,其中索引0为第一个数据,索引不能超过列表长度。





该指令用于设置条件语句,点击“+”号,可增加判断的情况;出现多种情况后,点击“-”号,可减少判断情况。


06

挑战自我


在本项目中你已经完成了肺活量测量和历史数据显示,但在班级场景下的肺活量测量通常需要记录每个同学的测量数据,现在请你自己动手丰富你的肺活量测量仪,完成以下任务:

(1) 为你的肺活量测量仪设计一个开始页面,此页面包括选择学号部分,点击“+”“-”按钮选择学号,以及操作文字说明,你可以参考下图设计;



(2) 多次测量任务,按下A键,开始测量,进入测量页面,包含进度条和学号及对应历史数据;按下B键,屏幕返回学号选择页面,重新开始选定测量学生;



按下A提示音响起,开始测量页面显示进度条和历史数据



按下B上传数据,返回学号选择页
附件下载

jenniferya 发表于 2024-4-24 14:41:07

1.肺活量用声音传感器准确吗?为什么不是用压力传感器 2.肺活量的值是循环里面每次加1而不是加当前声音值这样我测试的结果偏小 我每次只有300-400

ki123456 发表于 2024-4-24 14:50:15

本帖最后由 ki123456 于 2024-4-24 14:52 编辑

jenniferya 发表于 2024-4-24 14:41
1.肺活量用声音传感器准确吗?为什么不是用压力传感器 2.肺活量的值是循环里面每次加1而不是加当前声音值...
这是一个针对板载传感器的练习,你可以把它当作一个模拟游戏,并不能正确显示肺活量。压力传感器也是一种可以用于模拟的方式。这里变量加1,是用来统计呼气时长的,你也可以试试加当前声音值(响度代表吹起力度)。
页: [1]
查看完整版本: 【行空板图形化Python入门教程】第10课:肺活量测量仪