luyi 发表于 2020-2-21 16:11:25

掌控板计步器【三轴加速度传感器系列2】

      计步器一种计量工具,是通过统计步数、距离、速度、时间等数据,测算卡路里或热量消耗,用以掌控运动量,防止运动量不足,或运动过量。想知道自己每天走了多少步吗?想知道自己消耗了多少卡路里吗?作为一名创客,我们可以自己做出一个计步器来。

       掌控板自带的三轴加速传感器,就可以做一个炫酷的计步器。关于掌控板三轴加速传感器的介绍,欢迎翻翻我上一篇帖子《掌控板制作水平仪【三轴加速度传感器系列1】》

       掌控板三轴加速器分别有X轴、Y轴和Z轴方向的加速度,我们应该取哪个轴的加速度呢?,我们不能单独取哪个轴的加速度来进行判断,因为人们往哪个方向走都有可能。因此,经过多次测试,我们取这三轴的矢量和进行判断。三轴加速度矢量和计算公式如下:

所以使用图形化代码表示这个公式就是

注:此次实验我们使用的是mPython 0.5.1-beta4版本,所以三轴加速度的矢量和需要我们自己编写。而使用mind+软件则可以直接使用“三轴加速度的强度”即可


掌控板计步器怎么做呢?

1. 定义新变量step,表示当前已经走过的步数,初始值为0.

2. 判断三轴加速度的矢量和是否大于1,如果大于1,说明已经走了一步,则表示变量的步数累加1.

3. 在屏幕上使用“仿数码管44像素”显示当前步数

4. 一直重复执行上面的代码就可以简单的实现了,贴出上面完整代码。

到了这里,计步器原理已经实现了。如果您这是简单的研究,到这里就可以结束了。
但是想要这个计步器更顺溜,还需要优化。请接着往下看:

我们观察上面的代码:

       不足1:显示部分直接放在“一直重复执行”里面,不管人是否在走路,它都会执行“显示清空”、“显示生效”等操作。

       不足2 :我们知道人走路是有一定的速度的,期间有一定的间隔。如果我们总是不间断地重复执行判断加速度,可能会引起重复计数。

       不足3 :当步数小于10时,一位数字显示在最左边;当步数大于9且小于100时,只显示两位数字,最右边位置是空白的;只有当步数大于99时,步数显示才是完整的。

思考一下,上面这三个问题,是不是这样的呢?

因此,我们还要对代码进行优化

      优化1,将显示部分封装成函数,放在“如果……执行……”内部,当加速度的矢量和a不变的时候,显示器不执行操作。

      优化2,在“一直重复执行”内部,增加等待时间,减少重复计算可能。

      优化3,对当前步数step进行逻辑判断,如果不足3位数,在前面补0。

经过不断地优化,才使得掌控板计步器更加实用。

      优化后代码如下:

到这里,一个较为实用的计步器已经产生了。

https://v.youku.com/v_show/id_XNDU1NTM3OTAwOA==.html

同时,我们也可以添加更多的功能,比如说,用户连续按A键,可以连续切换屏幕显示“步数”、“消耗热量/卡路里”、“快跑/慢跑步数”等等功能。这就需要我们对收集的数据进行更加细致的分析。那么,如何实现呢?大家一起先来试试吧!

















风悠扬0539 发表于 2020-2-21 16:20:31

非常的好啊,研究一下学习学习

DFrJ5KYVQaH 发表于 2020-2-22 10:27:14

好贴,收藏学习中

glwz007 发表于 2020-2-22 19:26:47

谢谢分享!

gada888 发表于 2020-2-23 11:45:21

满有意思

steed 发表于 2023-1-3 13:00:12

“2. 判断三轴加速度的矢量和是否大于1,如果大于1,说明已经走了一步,则表示变量的步数累加1.”
可以详细解释一下吗?不是太理解

花生编程 发表于 2023-1-16 23:00:12

学习了!

花生编程 发表于 2023-1-16 23:01:15

感谢分享!
页: [1]
查看完整版本: 掌控板计步器【三轴加速度传感器系列2】