EVE 发表于 2019-4-22 12:31:30

Mind+ 掌控板入门教程12 电子秒表

【Mind+】掌控入门 项目十二 电子秒表
-DFRobot官方出品上一篇:【Mind+】掌控入门 项目十五 家庭噪音数据分析

下一篇:敬请期待

      在运动会上,很多体育项目需要裁判记录时间来代表运动员的成绩,秒表就是一种常用的测时仪器。秒表主要有机械秒表和电子秒表两大类,由于电子秒表具有显示直观、读取便利、精度高等优点,所以使用更为广泛。

      利用掌控板不仅可以做出一个可以计时的电子秒表,还可以结合按钮实现分次计时,让我们一起来动手试试吧!


项目示例

      电子秒表显示时间的格式为60进制的“00:00.00”,表示分(00-59)、秒(00-59)和精度(00-99)。秒后保留两位小数代表时间精度为0.01秒。读取秒表的方法非常简便,如下图可读为5分28秒36或5分28.36秒。


      电子秒表上一般会有3-4个按键,控制秒表的启动、暂停、复位和分次计时。本项目中,我们将利用掌控板上的按扭A控制启动或暂停,按扭B控制分次计时,掌控板背部自带的复位按键实现复位。

    可通过以下三个小任务进行实践:


[*]任务一:以“00:00.00”格式显示时间


[*]任务二:按下按钮A控制计时的启动、暂停


[*]任务三:按下按扭B进行分次计时

任务一:显示时间

      在掌控板屏幕中央以以下格式显示计时中的时间。



      输入以下程序,并将程序上传。


* 程序中对变量“分”、“秒”的计算其实就是将10进制数转换为60进制,关于进制转换的知识见本文知识拓展。

运行结果:屏幕中央显示实时计时时间。


      程序中设置了“分”、“秒”、“精度”三个变量,对应掌控板上的“00:00.00”。我们知道1分钟有60秒,1秒钟有100个0.01秒。所以需要将指令获得的实时时间进行一些数学运算得到三个变量的数值。

      如下表,当为11685231毫秒时,转换为60进制的时间为3小时14分钟45秒23。


小试牛刀:尝试在屏幕中央显示当前系统运行时间,效果如下。


任务二:启动与暂停

      接下来,我们将学习使用按钮A控制秒表的启动和暂停。参考程序:


      运行结果:程序运行后,屏幕中央显示00:00.00。当按下A键,开始计时,再次按下A键,计时停止。如此循环往复。

任务三:分次计时

      按下按钮B进行分次计时,并将分次计时时间显示在掌控板上。参考程序:

运行结果:



知识拓展

软件知识

1、系统运行时间

      在Mind+中,指令表示掌控板上程序开始运行后的实时时间。读取的时间单位为毫秒。分别输入下面两个程序,观察运行结果。

程序一:


程序二:


      运行程序一,屏幕左上角可看到不断变化的“系统运行时间”的数值。

      运行程序二,屏幕显示为空,当按下按钮A,屏幕左下角可看到当前的“系统运行时间”值。

      对比上面两个程序,可以发现“系统运行时间”只与程序什么时候开始执行有关系,与程序中的输入、输出无关。

2、进制

      进制是人为定义的一种带进位的计数方式。

      生活中描述身高185公分、钱10元、学生56个,采用的都是十进制,十进制是逢10进1的计数方法,每一位的数值为0-9。钟表计时中,1个小时为60分钟,1分钟为60秒,为六十进制计数方法,逢60进1,每一位的数值为0-59。

      此外,一天24小时,逢24进1,就是二十四进制;一星期7天,逢7进1,就是七进制;一年12个月,逢12进1,就是十二进制;而计算机中的数据只有 0 和 1,逢2进1,就是二进制。


3、进制转换

      不同进制之间的数可以相互转换,比如将六十进制的1小时25分钟可转换为十进制的85分钟(1*60+25=85)、十进制的30个月可转换为十二进制的2年6个月(30/12=2余6)。

      本项目的核心难点就在于将十进制的转换为六十进制的钟表时间。所以接下来,我们将举例说明十进制转换为六十进制的方法。可以采用除余法,过程如下:


   12345秒(十进制)可转换为3小时25分45秒(六十进制)。

4、数字类型变量

      在Mind+中,所有的数字类型变量默认保留小数点后两位,如果设置变量值为1,在软件底层这个值为1.00。


      下图为任务一中部分程序截图,作用是将小于10的变量“精度”补零后显示在屏幕上。


      例如,当系统运行时间为35毫秒时,变量“精度”为3.00秒,补零过程如下:


在中,“屏幕显示文字”指令会自动处理掉变量中小数部分的“.00”,以整数形式显示,所以不用考虑。

5、指令汇总
项目小结
[*]掌握指令的意义和用法


[*]学习通过数学方法处理数据


[*]掌握计时器的编程实现


[*]了解进制、进制转换的概念

挑战一下

1、尝试将掌控板变成一个智能手表,在屏幕上显示时间、日期和星期几。


2、尝试用掌控板制作一个倒计时器。用户可以自定义倒计时时间,在屏幕上显示倒计时时间,倒计时完成后,发出警报声音,全部LED灯显示为红色呼吸灯。

138347640882018 发表于 2019-4-24 16:38:56

运行出错!不对

EVE 发表于 2019-4-24 18:09:35

138347640882018 发表于 2019-4-24 16:38
运行出错!不对

刚刚在帖子里附了程序,可以下载运行看看,这个项目的程序有很多数据类型的转换,比如把字符串转成数字等等,如果不注意的话容易出错,希望可以帮到你哟

138347640882018 发表于 2019-4-24 19:40:37

注意空格的清空作用就对了

33 发表于 2019-7-8 08:50:54

运行出错,怎么回事

EVE 发表于 2019-7-8 09:42:51

33 发表于 2019-7-8 08:50
运行出错,怎么回事

下载压缩包程序试试看

338925 发表于 2019-11-18 16:44:16


运行出错!不对

EVE 发表于 2019-11-19 11:35:21

338925 发表于 2019-11-18 16:44
运行出错!不对

用的什么版本Mind+啊?刚刚用1.6.1跑了程序没问题啊

gada888 发表于 2019-11-25 14:32:54

学习了

YONG 发表于 2019-11-25 23:03:46

初学者表示这个很详细,但是很烧脑,得慢慢消化{:5_120:}

迟迟具体 发表于 2024-6-27 11:25:11

太棒了,学到了,感恩

HY2020HY1 发表于 2024-7-14 22:12:25

多谢大佬{:6_215:}
页: [1]
查看完整版本: Mind+ 掌控板入门教程12 电子秒表