最新消息:

【EV3基础编程 第八课】升阶学习难度,一对一个性化控制程序,变量来了

乐高 少儿编程 2746浏览 0评论
ev3基础编程01

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

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

如果说学习机器人,是一个游戏

那么一个个学习模块的使用,就像是升级打怪。

到了一定级别后,会有升阶的要求。往往升阶是需要做一些复杂的“突破”任务后,才能继续升级的。

那么我们今天要说的模块,就是“升阶任务”——变量模块

变量模块

 

当你开始使用变量模块的时候,意味着你正在向机器人学习的下一阶段迈进了。

很多人觉得很简单,变量就像是一个文件夹,我们可以把数据储存进去,需要用的时候拿出来用。

确实,可以这样解释。

来看一下变量模块的功能,它可以储存我们上节课所讲到的所有数据类型:

【EV3基础编程 第八课】升阶学习难度,一对一个性化控制程序,变量来了

数据值;

文本值;

逻辑值。

但如果按照我们一般的理解,它就只能作为一个储存工具了。

比如下图:

【EV3基础编程 第八课】升阶学习难度,一对一个性化控制程序,变量来了

我们把一个传感器数据记录下来。然后通过变量调取出来使用。

可笑的事情出现了。我们为什么不直接吧数据拖过去呢?像这样……

【EV3基础编程 第八课】升阶学习难度,一对一个性化控制程序,变量来了

其实光这样理解是远远不够的。

变量在很多时候,充当着一个程序逻辑角色的扮演者。

 

一对一个性化控制

 

刚开始学习编程的小朋友,经常会犯一些逻辑上的错误。

其中最大的错误,莫过于逻辑混乱了。

所有的“输出”(一般就是指电机),其实一定是一个指令去控制的。

举个例子:

题面

请搭建一个基础小车,然后设置一个程序。

要求:

1、按主机上的上键,前进

2、按主机上的下键,后退

3、当超声波传感器探测到前方距离小于15cm时,停止前进,但可以后退。

根据题面,我们可以直接写出这样的程序。

【EV3基础编程 第八课】升阶学习难度,一对一个性化控制程序,变量来了

点开看大图

一个主循环(右边)控制小车的前进后退,一个主循环(左边)控制前方距离探测时的动作。貌似没什么问题。

但真正在运行的时候,大家会发现,出问题了。

我们再看一眼这个程序,就会发现,问题出在:

【EV3基础编程 第八课】升阶学习难度,一对一个性化控制程序,变量来了

点击看大图

前方距离小于15cm的时候,小车要满足停止的要求;这个时候如果按前进键,小车同时又接受到了前进的指令。

既要前进,又要停止。

艾玛,到底听谁的?

很明显,这个时候,程序出错了,因为有两个条件同时控制着输出(电机)。

如果这个时候,我们用变量来控制,问题就迎刃而解了。

我们一起来动手尝试,并理解一下。

定义并使用变量

 

定义变量,是为了不直接对输出设备下指令。而是先通过数据进行处理分析,最后通过“一个”要求,对输出设备发出指令。

第一步

我们写入一个逻辑变量。这个变量我们起名为stop,用来记录超声波传感器的数据,而不是直接控制电机。

【EV3基础编程 第八课】升阶学习难度,一对一个性化控制程序,变量来了

这个时候,当小车前方距离小于15cm的时候,逻辑为“真”,大于的时候,逻辑为“伪”

第二步

再写入一个数据变量,起名为CTRL,用来定义按键的各个对应值。

我们可以这样理解,每次按了一个不同的按键,它就给这个变量重新定义了一个“值”。

如下图

【EV3基础编程 第八课】升阶学习难度,一对一个性化控制程序,变量来了

这里我们就可以把这个结果分类判断一下了。按“上”的时候,会发生两种情况:

1、当前方大于15cm的时候,调用stop逻辑变量,即程序停止。

2、当前方小于或等于15cm的时候,运行CTRL数据变量,这个时候值为1

而按“下”的时候,变量值为2;什么都不按的时候,值为3

第三步

定义一下CTRL模块不同的值所对应的各种动作要求。

如下图:

【EV3基础编程 第八课】升阶学习难度,一对一个性化控制程序,变量来了

值为1的时候,前进;

值为2的时候,后退;

值为3的时候,停止。

这样一来,我们的程序就完成了。

我们来看一下完整的程序。

【EV3基础编程 第八课】升阶学习难度,一对一个性化控制程序,变量来了

点击看大图

有没有发现?这里面,对输出设备,也就是电机直接下“命令”的,只有一个变量模块,也就是CTRL。

而其他的,都是在逻辑上的数据分析。

这样的程序,逻辑是通畅的。

变量给我带来的功能,其实就是一种思考方式。我们需要用这个模块,体现出我们真正对于机器人行为的要求。

看似很简单,事实上,每一个变量从定义,到调取。都是我们细细思考的结果。

你要搞清楚的是:

这个变量代表着什么?

它的作用是什么?

最终它在逻辑的过程中起到一个什么作用?

这部分内容我们日后会经常碰到。别急,一步步来,先通过基础编程课,体会一下吧!

我们下期再见!

课程越来越精彩,希望大家帮忙推广哦!再次感谢!

 

重点总结

学习认识变量模块的基本应用。通过案例了解它的真正意义。

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