木子呢 发表于 2022-11-11 10:07:59

【行空板图形化Python入门教程】第09课:健身打卡追踪器

第09课 健身打卡追踪器

众所周知,经常健身可以塑形,保持身体健康,在众多健身方式中,跑步作为一种简单又有效的健身方式被人们所喜爱。然而,健身最难的是坚持,今天我们就使用行空板制作一个健身打卡追踪器,设定一个目标,让行空板记录你的跑步情况吧。




任务目标

跑步时晃动行空板,行空板屏幕实时显示当前跑步步数,以及达到给定目标的进度情况。

https://www.bilibili.com/video/BV14D4y1x7qz/?spm_id_from=333.999.0.0

知识点

1. 掌握绘制进度条的方法

2. 掌握行空板加速传感器的使用方法


材料清单

1. 硬件清单


行空板x1

Type-C&Micro二合一USB线x1

2. 软件使用

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




动手实践

健身打卡追踪器的主要功能是统计步数,并根据目标步数显示达成进度。接下来我们就分两个任务来制作吧。

任务一:获得实际步数

在此任务中,我们将学习加速度传感器的使用方法,并利用加速度传感器完成跑步步数的统计和显示。

任务二:显示目标完成进度

基于已统计的步数,我们将结合给定的目标,学习利用矩形制作进度条,实时显示运动目标的达成情况。


任务一:获得实际步数

1. 硬件搭建

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



2. 软件准备

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



3. 编写程序

你一定听说过微信运动里的计步功能,它是通过检测手机的晃动来完成计步的,这与行空板计步原理相似,那具体如何实现呢,接下来我们就一起学习一下。

(1) 检测晃动

行空板晃动实际上是行空板由静止突然移动再静止的过程,需要使用行空板自带的加速度传感器,通过它的数值变化判断行空板是否被晃动。获取加速度数值指令是 读取加速度的值x ,你可以在“行空板”的“板载传感器”分类下找到并拖出指令,然后切换“x”为“强度”。

注意:关于加速度传感器的知识,参见“知识园地”。



现在你可以把获得的加速度数值实时显示在行空板屏幕上,并使用 等待 指令让数据变化慢一点,方便观察晃动前后的数据。



当行空板静止时,数据为1左右,且不会有太大的变化;当行空板晃动时,数据会出现大于1.5的情况。


行空板静止


晃动行空板

因此,我们可以选择大于1.5的数值作为行空板晃动的判断依据,也就是说,如果加速度传感器强度数值大于1.5,就可以计步数加一。



(2) 统计步数

我们已经知道如何去判断行空板晃动了,现在就来完成步数统计和显示吧。

首先,建立 实际步数变量 ,并在程序开始处将 实际步数变量设为 为0。然后只要在判断晃动条件满足后,显示并增加变量即可。



为了更清楚的说明数据含义,你可以在实际步数数值上方加一行文字说明,并对显示内容如坐标、字体等进行一定的调整,完整参考代码如下:



4. 程序运行

点击运行,显示“已完成步数”和实际步数数值0,晃动行空板实际步数增加。




任务二:显示目标完成进度

1. 编写程序

通过上一个任务,我们已经可以成功统计实际步数,接下来就来根据给定的运动目标,显示目标达成进度吧。

为了更好的展示目标达成情况,项目中增加了一个进度条。进度条是由一个空心矩形外框和实心矩形构成。



这里的矩形外框宽度表示目标步数,而进度条的宽度表示实际步数,当实际步数越来越多时,进度条会不断变长,直到达到目标步数。所以,在设置进度条坐标的时候,要注意矩形外框和实心进度条的坐标一致,另外,开始的时候实心进度条宽度为0。



至于进度条矩形的宽度变化,需要根据目标步数的完成比例来处理,而完成比例=实际步数/目标步数,进度条的当前宽度=完成比例*进度框的宽度,若设定目标步数为1000,则有:进度条的当前宽度=完成比例*160。现在我们建立 完成比例变量 ,然后通过计算并更新进度条宽度即可。



另外,在进度条宽度变化的过程中,还有一种情况就是如果实际步数超过了目标进度,进度条就会超出矩形外框。



此时,我们可以判断目标和实际步数的关系,如果实际步数超过1000(目标步数),进度条宽度固定为160,否则遵循按比例显示宽度。



至此,我们就已经完成了案例的核心功能,完整示例代码如下:



2. 程序运行

检查行空板连接情况,点击运行,晃动行空板,观察实际步数和进度条的变化。



3. 试一试

现在你已经可以显示实际步数和目标达成进度了,请你试一试动手丰富健身打卡追踪器的页面和功能 :

(1) 你可以参考下图,或者自己设计一个健身打卡追踪器背景页并适当调整文字内容、颜色等,让它看起来更好看吧;



(2) 你可以参考下图设计一个目标设定页,使用加减号按钮修改目标步数值,确定按钮进入计步页面开始计步。




知识园地

1. 加速度传感器

加速度传感器,顾名思义是用来测量加速度的传感器,因为加速度是有大小和方向的,所以加速度传感器的数值也会有大小和正负变化,测量加速度的方向也可以有更多的情况,如竖直方向,水平方向。

行空板上内置了一个加速度传感器,它位于行空板背面。



行空板上的加速度传感器是一个三轴加速度传感器,它可以测量X,Y,Z三个方向的加速度。当行空板屏幕向上水平放置时,X轴正方向为金手指一侧的方向,Y轴正方向为Home按键一侧的方向,Z轴垂直于板子,正方向为屏幕背面一侧的方向。



我们通常使用 读取加速度的值x来获得加速度传感器的数值,指令下拉菜单中的“强度”,表示的是x、y、z三轴加速度器数值的平方和再开方的结果。



加速度传感器的具体数值变化,是以重力加速度为参考的。以x轴加速度为例,我们将x轴加速度数值显示在行空板屏幕上,观察数值变化。

当你竖着拿行空板,金手指朝下时,x轴方向上只受到竖直向下的重力影响,屏幕上显示数值大小接近于1;金手指朝上时,受到的竖直向下的重力会指向光线传感器一边,屏幕上显示数值大小接近于-1。





当你将行空板水平放在桌面上,由于x轴方向没有重力加速度的影响,所以行空板屏幕上显示数值大小接近于0。



2. 指令学习

本项目主要使用了学习了行空板加速度传感器指令,接下来我们就详细学习一下。



该指令用于获得加速度传感器的数值,在下拉菜单中可以选择获取的是x、y、z轴或强度数值。

挑战自我

请你设计一个小球移动游戏,开始小球出现在上下左右任意一个位置,通过转动行空板,控制小球上下左右移动,比如,当小球出现在最右边,你需要向左转动行空板屏幕(如下图),控制小球向左移动。最终,小球移到屏幕中间,游戏胜利。





提示:小球随机出现的实现要使用到随机数指令,它在“数字”分类下,你可以找到 在1到10间取随机整数 ,并修改为1到4之间。



然后将小球的四个位置坐标分别与数字相对应,你可以参考下图来进行实现。



附件下载


aYYSW8AepLLd 发表于 2023-12-15 20:53:34

学习学习
页: [1]
查看完整版本: 【行空板图形化Python入门教程】第09课:健身打卡追踪器