友情提示:380元/半年,儿童学编程,就上码丁实验室。
本阶段课程适合2年级、3年级、4年级及以上刚开始接触EV3机器人的同学们。
本篇请下载 LEGO Mindstorms教育版软件 有条件的话,请为孩子添置一套EV3套装,让课程内容可以同步练习进行动手实践。
那么一个个学习模块的使用,就像是升级打怪。
到了一定级别后,会有升阶的要求。往往升阶是需要做一些复杂的“突破”任务后,才能继续升级的。
那么我们今天要说的模块,就是“升阶任务”——变量模块。
变量模块
当你开始使用变量模块的时候,意味着你正在向机器人学习的下一阶段迈进了。
很多人觉得很简单,变量就像是一个文件夹,我们可以把数据储存进去,需要用的时候拿出来用。
确实,可以这样解释。
来看一下变量模块的功能,它可以储存我们上节课所讲到的所有数据类型:
数据值;
文本值;
逻辑值。
但如果按照我们一般的理解,它就只能作为一个储存工具了。
比如下图:
我们把一个传感器数据记录下来。然后通过变量调取出来使用。
可笑的事情出现了。我们为什么不直接吧数据拖过去呢?像这样……
其实光这样理解是远远不够的。
变量在很多时候,充当着一个程序逻辑角色的扮演者。
一对一个性化控制
刚开始学习编程的小朋友,经常会犯一些逻辑上的错误。
其中最大的错误,莫过于逻辑混乱了。
所有的“输出”(一般就是指电机),其实一定是一个指令去控制的。
举个例子:
题面
请搭建一个基础小车,然后设置一个程序。
要求:
1、按主机上的上键,前进
2、按主机上的下键,后退
3、当超声波传感器探测到前方距离小于15cm时,停止前进,但可以后退。
根据题面,我们可以直接写出这样的程序。
点开看大图
一个主循环(右边)控制小车的前进后退,一个主循环(左边)控制前方距离探测时的动作。貌似没什么问题。
但真正在运行的时候,大家会发现,出问题了。
我们再看一眼这个程序,就会发现,问题出在:
点击看大图
当前方距离小于15cm的时候,小车要满足停止的要求;这个时候如果按前进键,小车同时又接受到了前进的指令。
既要前进,又要停止。
艾玛,到底听谁的?
很明显,这个时候,程序出错了,因为有两个条件同时控制着输出(电机)。
如果这个时候,我们用变量来控制,问题就迎刃而解了。
我们一起来动手尝试,并理解一下。
定义并使用变量
定义变量,是为了不直接对输出设备下指令。而是先通过数据进行处理分析,最后通过“一个”要求,对输出设备发出指令。
第一步
我们写入一个逻辑变量。这个变量我们起名为stop,用来记录超声波传感器的数据,而不是直接控制电机。
这个时候,当小车前方距离小于15cm的时候,逻辑为“真”,大于的时候,逻辑为“伪”。
第二步
再写入一个数据变量,起名为CTRL,用来定义按键的各个对应值。
我们可以这样理解,每次按了一个不同的按键,它就给这个变量重新定义了一个“值”。
如下图
这里我们就可以把这个结果分类判断一下了。按“上”的时候,会发生两种情况:
1、当前方大于15cm的时候,调用stop逻辑变量,即程序停止。
2、当前方小于或等于15cm的时候,运行CTRL数据变量,这个时候值为1
而按“下”的时候,变量值为2;什么都不按的时候,值为3
第三步
定义一下CTRL模块不同的值所对应的各种动作要求。
如下图:
值为1的时候,前进;
值为2的时候,后退;
值为3的时候,停止。
这样一来,我们的程序就完成了。
我们来看一下完整的程序。
点击看大图
有没有发现?这里面,对输出设备,也就是电机直接下“命令”的,只有一个变量模块,也就是CTRL。
而其他的,都是在逻辑上的数据分析。
这样的程序,逻辑是通畅的。
变量给我带来的功能,其实就是一种思考方式。我们需要用这个模块,体现出我们真正对于机器人行为的要求。
看似很简单,事实上,每一个变量从定义,到调取。都是我们细细思考的结果。
你要搞清楚的是:
这个变量代表着什么?
它的作用是什么?
最终它在逻辑的过程中起到一个什么作用?
这部分内容我们日后会经常碰到。别急,一步步来,先通过基础编程课,体会一下吧!
我们下期再见!
课程越来越精彩,希望大家帮忙推广哦!再次感谢!
重点总结
学习认识变量模块的基本应用。通过案例了解它的真正意义。