本阶段课程适合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系列挑战赛事教练及裁判员
领取专属 10元无门槛券
私享最新 技术干货