友情提示:380元/半年,儿童学编程,就上码丁实验室。
今天我们讲一下数据机构方面的一些很重要的思路。
在EV3的学习中,传感器貌似是一个挺重要的部件。
有了各种传感后,机器人得以实现很多智能化的功能。
这一点,毋庸置疑。
随之而来的问题就是,虽然数据变得多样性强了。当解决单一问题的时候,我们可能没有感觉,但若是多种传感器配合使用的情况下,多样的数据就会带来很大的麻烦。
跟着我的小家伙们都挺聪明的,所以很多时候,他们一旦理解了我在讲什么,举一反三的能力就特别强。我以前非常害怕三四年级的他们会听不懂,但他们的反应着实出乎我的意料。
有一次上课,我用了个最简单的例子来进行教学。
——电风扇。
这图是盗的
好吧,很多小朋友都是在刚进班的初级课程里面就学过的。
不过我们就是要拿这个案例来讲解“数据结构”。
首先,搭出一个电风扇,对于常年学习EV3的小朋友应该是很简单的事情。
然后只要做出这样一个程序,电风扇就可以动了。
如果我们要加一些按键换挡的功能,其实也只要这样。
但如果仅仅就停留与此,其实这个课题是跟当今对电子产品的理解是有极大的脱节的。
以前我们在使用电子产品的时候,目的是为了满足单一的需求,换言之,就是以“能用就行”的概念来设计的。
而当代的电子产品工业设计,一定是以“极致体验”为核心设计目标的。
非广告,只是举例
这样一来,即便是一个电风扇,也会融入很多其他技术,使得体验更加完善甚至是完美。
这就要求我们尝试把电风扇加入一些传感器,让它能吹出让人更舒服的风。
这个问题抛给小家伙们,马上开始乱成一锅粥。课题讨论是很重要的!
大家表现的很活跃,最终给出了2个主要命题。
1、当人走近或者远离的时候,电风扇应该可以自动控制风速(使用超声波)。
2、不同的房间,不同的光线情况下(颜色传感器),表示人的行为不同。
比如环境光非常强烈的时候,肯定是很热的,所以风要大;环境光很暗的时候,可能人就在睡觉了,这时候风要柔和甚至是断断续续的。
很现实,对吗?注意,小家伙们已经会从行为角度去考虑问题了!这才是我想要的!
首先娃们做了个很简单的程序。是这样的。
这样满足了当人接近的时候,风就小一些,当人离远了,风就大一些。
有一个娃提出了,人如果离的太远,意味着没人,所以应该会自动关停。
于是这个程序又变成了这样。
我个人觉得这个程序是很有脑子的成品。
但当孩子们加入第二个部分,环境光的时候,问题来了!
环境光本身要跟上面这个主程序产生关系,这个数据该如何配置呢?
我们发现环境光的取值范围是0-100。光线越强,值越高。
而环境光作为另外的一个参数,对电机最终的转速起到了限制作用。
比如:当环境光小于25的时候,即便是距离离的稍远,我们可能也希望转速不是之前的满速状态,而是一个较小的值。
所以,小家伙们在用环境光的范围值来配置程序的时候,先去掉了自动关停的部分后做出了这样一个程序。
做到这一步,他们发现,这样制作下去,整个程序会变得非常大……并且要配置的数据组合也很多。
很显然,这是不靠谱的。如果情况更多样的话,这只会越来越麻烦。
怎么办呢?
我们来看一下,假设0-100的值分成4份,每25作为一个范围段,配合上面的近远问题。(如果也设定了4个档位)。那么至少有10个需要配置的档位(4+3+2+1),这显然是件很恐怖的工作量!
其实我们可以用很简单的方法来解决。
那就是理清楚数据结构。
首先,把所有的远近问题(超声波传感器)的值,分成4分,每一份编写为1个固定的值。
然后同样把环境光值分成4分,每一份编写为另1个固定的值。
有木有很像?对,没错!
就是Crtl+C,Crtl+V大法!然后改改数字和变量就是了。
接下来就容易了!
先思考两个极端的情况,就是:
人离的近(风速小),环境光弱(风速小);
人离的远(风速大),环境光强(风速大)。
这两种情况其实是:1*1和3*4。
(当距离太远的时候,可以写入为0,上面的图上我们写的是4,改一下,那么0*4就自动没风了。)
我们只需要乘以8倍(随便调),就差不多吧电机给用足了!
所以,总控的部分应该是如下。
这样一来,完整的程序就搞定了,并且非常干净清楚。
上周有位号内的朋友问我,如果多个传感器的数据要产生关系,程序碰到的数据情况就会非常多样,编着编着就乱了。
其实关键就在这里。
你到底是在处理数据?还是要先做个数据的结构?
答案我相信看了这个案例大家就都清楚了。
推荐各位大朋友小朋友都研究下这个简单的问题哈。
对于日后应对复杂一些的数据情况时,这个知识点是非常关键的哦!
我们下周再见!