老丁独家!从这节课起,EV3开始“智能化”!

本阶段课程适合2年级以上刚开始接触EV3机器人的同学们。

本篇请下载 LEGO Mindstorms教育版软件 有条件的话,请为孩子添置一套EV3套装,让课程内容可以同步练习进行动手实践。

新年快乐!

本周课程更新晚了,不过一如既往,老丁还是给到大家“独家”的内容。

虽然在网络上,所谓的“独家”并不存在,可能过阵子给复制黏贴了,也就不“独家”了。

不过这也正是这个号的初衷——

让更多同学能够接触到STEM学习的魅力

EV3作为一条主线,我们可以从里面认识到理科知识的实际应用、编程的逻辑和实践等等……

2018年,我是不是该引入其他语言针对EV3进行一些编程教学?这个问题我也在考虑中。

还是看大家的希望和反馈吧。内容很多,我们慢慢来。

大家的建议,决定了本号的内容发布方针。

所以,责任重大的其实是各位哦!

今天的内容比较长,我们需要把前两节课的知识点进行“融会贯通”才学得会。

从现在开始,我们的EV3也不再是一个简单的机器玩具。

而开始真正称得上“智能机器人”

数据、索引与长度

之前两节课,我们说了三个重要的概念,这个我要求是必须理解的。

注意:

不是知道,不是看到,而是“理解”!

提炼总结起来也很简单:

数据——可以是手动输入,也可以是传感器提供的。

索引——自动生成,是给各种数据的一个“记号”,代表它们的顺序位置。

长度——指有多少个数据,也就是“队伍”有多长。也是一种值。

比如,你去逛一个Shopping Mall:

数据就是各种各样的商品

比如:化妆品、女装、玩具、餐饮……

索引就是各楼层商品的分类情况

比如:一楼卖化妆品、二楼卖女装、三楼玩具……

长度就是总共有多少层楼

比如:一共有8层楼。

这样讲还不能理解的同学,请补充DHA给智商充点值……

添加阵列数据

在很多情况下,我们需要对阵列数据进行添加。

一种是手动的,就像我们之前的课里说的那样,如上图,不解释了。

第二种就是自动添加

有没有发现,如果你要对阵列添加一个数据,其实是改变了索引和长度,而不是改变了数据。

还是用上文那个例子:

商场如果要增加一个商品种类的销售。

多加盖了一层楼,这层楼卖一样之前没有的东西。这个时候,楼层增加了,商品也增加了,但是原来的那些楼层和商品,其实没有变动过。

对不对?

所以,当我们要程序自动为阵列添加数据的时候,要管的就是索引和长度,之前其中的数据,则不用理会

我们打开阵列模块,可以选择到“附加”功能。如下图:

是不是?只有数据和值两个可填选项?

自动添加数据

一起来动手操作一下吧。

我们来看一个很简单的题面。

要求EV3,根据看到不同的颜色和看到的顺序,在屏幕上按这个顺序显示不同的值。

第一步,我们首先确定场景条件和动作:

很清楚,

要获取不同的色值——颜色传感器

要显示数据——屏幕显示动作

第二步,分析任务逻辑:

1、 不同颜色,这个数据是需要输入的,由色感解决问题。

2、 显示数据,这个是数据输出,由EV3的屏幕输出。

3、 数据需要自动排出一个顺序,使用阵列自动排列。

上面三个很清楚,但最后一个问题。

4、 获取多少个数据?什么时候算是结束获取数据,然后开始在屏幕上显示呢?

这个问题,在题面中没有提出,但我们作为“开发人员”,是应该想到的。现实中,确实是有需要的。

不然程序就会一直等待获取数据,而不输出数据。

我们的解决方案,可以是:

按键,告诉EV3,获取数据已经结束,开始执行显示。

第三步,开始编程:

首先放上颜色传感器,用来获取(输入)数据

然后放上显示模块,用来输出数据

这两个部分,也代表了“输入”和“输出”两个程序主要组成部分。

接下来我们来编写“输入部分”

在程序开始的地方,先创造一个阵列变量,用来每次重置这个变量的数据,清零。

读取这个变量,变量的数据值读取到“阵列运算”模块里面,进行再次编译。

如上图,解释一下:

阵列模块选择“附加”功能,意思就是在原来的阵列上,附加数据。

附加的值,由颜色传感器提供。

再把附加完数据的阵列,重新写入到原来的那个变量里面,进行保存。

套上循环,加上结束条件:按中间键,停止获取数据。

如上图。

至此,获取数据部分的程序完成了。

再做“输出部分”。这就简单了。

重新读取这个变量,用来进行数据在屏幕上的显示,每个数据显示1秒。

套上循环,自动根据索引顺序执行。

至此,输出数据部分的程序也完成了。

两个部分按照顺序合并起来,这个程序也就基本结束了。

大家可以试试。

程序崩溃

又来了,对,我们很多同学都会忘记上节课的重点内容。

如我们所说,“自动索引”功能,是需要控制其长度的

不然,当索引找不到阵列数据的时候,程序就会崩溃

我们千万不要忘了,使用这个功能的时候,要设定循环结束的数据长度条件!

如下图:

跟之前不同的是,之前我们手动输入,是可以得知长度的,所以有多少个数据,填个循环结束的值,就可以了。

自动添加数据的情况下,我们无从得知“队伍”到底有多长,难道100个数据,你一个个数有几个?

当然不是!这时就需要让EV3自动计算啦!

好了,完美。

大家可以动手试试啦!

当然,我们今天举的例子也是一个简单的例子。

基础课的“保底”教学目的:理解+使用。(这个靠老师讲解)

希望能够达到的更高教学目标是:基本分析+应用。(这个靠老师引导,但也靠自己)

希望同学们可以举一反三,不要停留在我们课堂内,思考一下,阵列形成的“数据库”还能如何利用呢?

想一想:

我们的扫地机器人,如何记录下家里的清扫地形图?

我们平时去餐厅排队点菜时,机器是如何记录和调取桌号点菜顺序和菜品名称的?

……等等等等……

这些在我们生活中的应用是非常广泛的,自己动手试试,做一个不一样的“产品”吧!

自动记录——根据逻辑要求——自动分析调取数据——产生不同的行动

至此我们的EV3也开始走向了“智能化”。

有问题,可以通过本号直接,给我截图,留言。

针对同学的问题,我可以专门进行一些选题,给大家答疑解惑!

好啦,我们下期再见!

重点总结

学会自动添加数据,产生数据库,并自动调取数据,进行相应处理。

感谢关注本号,若觉好,请帮转

老丁介绍

主业:

某知名技术研发企业总监

机器人教育相关经验:

上海科技馆SVR虚拟机器人课程特邀讲师

FIT启蒙创新认证讲师、教练员

WRO 及 First系列挑战赛事教练及裁判员

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180105G0CJ4X00?refer=cp_1026

扫码关注云+社区