最新消息:

【 EV3基础应用 】让”搭电扇“课题进化一把吧!了解数据结构。

乐高 少儿编程 2392浏览 0评论
EV3基础应用

今天我们讲一下数据机构方面的一些很重要的思路

 

在EV3的学习中,传感器貌似是一个挺重要的部件。

有了各种传感后,机器人得以实现很多智能化的功能。

这一点,毋庸置疑。

 

随之而来的问题就是,虽然数据变得多样性强了。当解决单一问题的时候,我们可能没有感觉,但若是多种传感器配合使用的情况下,多样的数据就会带来很大的麻烦。

 


跟着我的小家伙们都挺聪明的,所以很多时候,他们一旦理解了我在讲什么,举一反三的能力就特别强。我以前非常害怕三四年级的他们会听不懂,但他们的反应着实出乎我的意料。

 

有一次上课,我用了个最简单的例子来进行教学。

——电风扇。

【 EV3基础应用 】让”搭电扇“课题进化一把吧!了解数据结构。

 这图是盗的

好吧,很多小朋友都是在刚进班的初级课程里面就学过的。

 

不过我们就是要拿这个案例来讲解“数据结构”

 


首先,搭出一个电风扇,对于常年学习EV3的小朋友应该是很简单的事情。

 

然后只要做出这样一个程序,电风扇就可以动了。 

【 EV3基础应用 】让”搭电扇“课题进化一把吧!了解数据结构。

如果我们要加一些按键换挡的功能,其实也只要这样。

【 EV3基础应用 】让”搭电扇“课题进化一把吧!了解数据结构。

如果仅仅就停留与此,其实这个课题是跟当今对电子产品的理解是有极大的脱节的。

 


以前我们在使用电子产品的时候,目的是为了满足单一的需求,换言之,就是以“能用就行”的概念来设计的。

 

而当代的电子产品工业设计,一定是以“极致体验”为核心设计目标的。

【 EV3基础应用 】让”搭电扇“课题进化一把吧!了解数据结构。

非广告,只是举例

这样一来,即便是一个电风扇,也会融入很多其他技术,使得体验更加完善甚至是完美。

 

这就要求我们尝试把电风扇加入一些传感器,让它能吹出让人更舒服的风。

 


 

这个问题抛给小家伙们,马上开始乱成一锅粥。课题讨论是很重要的!

大家表现的很活跃,最终给出了2个主要命题。

 

1、当人走近或者远离的时候,电风扇应该可以自动控制风速(使用超声波)。

2、不同的房间,不同的光线情况下(颜色传感器),表示人的行为不同。

 

比如环境光非常强烈的时候,肯定是很热的,所以风要大;环境光很暗的时候,可能人就在睡觉了,这时候风要柔和甚至是断断续续的。

 

很现实,对吗?注意,小家伙们已经会从行为角度去考虑问题了!这才是我想要的!

 


首先娃们做了个很简单的程序。是这样的。

【 EV3基础应用 】让”搭电扇“课题进化一把吧!了解数据结构。

这样满足了当人接近的时候,风就小一些,当人离远了,风就大一些。

 

有一个娃提出了,人如果离的太远,意味着没人,所以应该会自动关停。

 

于是这个程序又变成了这样。 

【 EV3基础应用 】让”搭电扇“课题进化一把吧!了解数据结构。

我个人觉得这个程序是很有脑子的成品

 

但当孩子们加入第二个部分,环境光的时候,问题来了!

 


环境光本身要跟上面这个主程序产生关系,这个数据该如何配置呢?

 

我们发现环境光的取值范围是0-100。光线越强,值越高。 

而环境光作为另外的一个参数,对电机最终的转速起到了限制作用。

 

比如:当环境光小于25的时候,即便是距离离的稍远,我们可能也希望转速不是之前的满速状态,而是一个较小的值。

 

所以,小家伙们在用环境光的范围值来配置程序的时候,先去掉了自动关停的部分后做出了这样一个程序。

【 EV3基础应用 】让”搭电扇“课题进化一把吧!了解数据结构。

做到这一步,他们发现,这样制作下去,整个程序会变得非常大……并且要配置的数据组合也很多。

 

很显然,这是不靠谱的。如果情况更多样的话,这只会越来越麻烦。

怎么办呢?

 

我们来看一下,假设0-100的值分成4份,每25作为一个范围段,配合上面的近远问题。(如果也设定了4个档位)。那么至少有10个需要配置的档位(4+3+2+1),这显然是件很恐怖的工作量!

 

其实我们可以用很简单的方法来解决。

那就是理清楚数据结构

 


 

首先,把所有的远近问题(超声波传感器)的值,分成4分,每一份编写为1个固定的值。

【 EV3基础应用 】让”搭电扇“课题进化一把吧!了解数据结构。

然后同样把环境光值分成4分,每一份编写为另1个固定的值。

【 EV3基础应用 】让”搭电扇“课题进化一把吧!了解数据结构。

有木有很像?对,没错!

就是Crtl+C,Crtl+V大法!然后改改数字和变量就是了。 

 

接下来就容易了!

先思考两个极端的情况,就是:

人离的近(风速小),环境光弱(风速小);

人离的远(风速大),环境光强(风速大)。

 

这两种情况其实是:1*1和3*4。

(当距离太远的时候,可以写入为0,上面的图上我们写的是4,改一下,那么0*4就自动没风了。)

【 EV3基础应用 】让”搭电扇“课题进化一把吧!了解数据结构。

我们只需要乘以8倍(随便调),就差不多吧电机给用足了!

所以,总控的部分应该是如下。

 

这样一来,完整的程序就搞定了,并且非常干净清楚。

【 EV3基础应用 】让”搭电扇“课题进化一把吧!了解数据结构。 

 


 

上周有位号内的朋友问我,如果多个传感器的数据要产生关系,程序碰到的数据情况就会非常多样,编着编着就乱了。

 

其实关键就在这里。

 

你到底是在处理数据?还是要先做个数据的结构?

答案我相信看了这个案例大家就都清楚了。

 

推荐各位大朋友小朋友都研究下这个简单的问题哈。

对于日后应对复杂一些的数据情况时,这个知识点是非常关键的哦!

 

我们下周再见!

您必须 登录 才能发表评论!