最新消息:

【EV3基础编程 第五课】学完、练完本课,足矣应付70%的编程要求。

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

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

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

之前的三节课,大家看的有点累。我写的也有些。因为在实际的教学中,其实对于思维方法的讲解,很费力。

不过这东西有点像开窍,并且没有那么难开,一通百通。

今天我们把上三节课的内容给混合在一起,实际操作一番。

一个很简单的题面,我们可以用很多种方法来完成。并且,如果能够把每一种都“说清楚”,就会知道以后我们编复杂的程序时,哪一种方法会更加合理。

要求:

让小车直线前进,当超声波传感器探测到前方距离小于50时,停止,并结束程序。

看着很容易吧,

那么到底我们可以编写出多少种程序呢?

这些程序会有什么不同的特点?

我们在实际操作中该使用哪种方式呢?

让我们一起进入今天的课程。

1

顺序编法1

从题面上来看,我们可以看到,这个程序其实就是一个很简单的顺序流程。最方便的编写方法当然就是根据题面的要求直接放模块啦!

【EV3基础编程 第五课】学完、练完本课,足矣应付70%的编程要求。

上面这个程序,是一个典型的“动作”+“流程”模块的组合。

前进 —— 调取传感器数据 —— 停止

中间的“等待”模块,是一个流程模块,它在这个时候其实是作为前一个模块的“条件”存在于这个程序中

我们看一下下面这个图,“电机开启”。这个模块是不可以单独运行的。还记得我们前面几节课说过的,“条件不完整”吗?

【EV3基础编程 第五课】学完、练完本课,足矣应付70%的编程要求。

虽然这个模块控制了电机开启这个动作,但是开启多久?或者转多少圈?等等,这些条件的不完整,会让EV3摸不着头脑,只知道开始不知道什么时候结束这个模块的运行。

于是单独运行这个模块,其实是达不到“执行前进”的目的的。机器的表现会是一动不动。

而我们现在这个程序,在“电机开启”后增加了一个等待模块。

解释为:“电机开启”直到超声波传感器探测到前方距离小于50cm时,执行下一动作。

 

这个时候,条件是定义“开启电机”这个动作模块的。

同样是调取超声波传感器的数据,下图这种编写方法对吗?为什么?可以自己动手试一试,看看是一个什么情况呢?

【EV3基础编程 第五课】学完、练完本课,足矣应付70%的编程要求。

(答案我们继续上完这节课,就会知道了)

2

顺序编法2

上面的那个编法主要是让一个“条件”伴随着“动作”而达到题面的目的。

我们如果使用循环流程,也可以达到同样的效果。但理解上会有一些不同。如下图:

【EV3基础编程 第五课】学完、练完本课,足矣应付70%的编程要求。

这个时候,我们在“电机开启”的动作上套了一个循环,我们可以试一下,只要这个循环状态保持,这个程序也是成立的。

【EV3基础编程 第五课】学完、练完本课,足矣应付70%的编程要求。

因为这个时候,其实条件是完整的。

即,电机保持开启运作。这个时候是不需要去设置额外的结束条件的。

所以我们这个时候,其实是在确定这个动作停止循环的条件

解释为:循环保持电机开启状态,当前方距离小于50cm时,停止循环,并执行下一动作。

这个时候,条件是定义“循环”这个模块的结束要求的。

 

3

顺序编法3

我们在上面的“想一想”中,直接使用黄色的传感器模块,是一个严重的错误。

【EV3基础编程 第五课】学完、练完本课,足矣应付70%的编程要求。

因为传感器模块只提供数据,不提供“流程”或者“动作”。它只是一个调取数据的工具。所以,我们直接放到一个流程里,其实它没有实际的功能。

如果要使用这个模块,我们需要把这个数据给调用出来。如下图。

【EV3基础编程 第五课】学完、练完本课,足矣应付70%的编程要求。

这个时候,我们专门针对传感器的“工作状态”进行了定义。

传感器模块的“逻辑”被调用到了流程模块中。它所提供的数据,成为了这个循环流程模块的结束条件!

所以,这个时候,程序就成立了。

解释为:开启电机,同时超声波传感器探测前方距离,当小于50cm的时候,停止超声波传感器的探测功能,执行下一步动作。

 


同理,我们可以这样来专门针对传感器进行操作,其实道理是一样的。

【EV3基础编程 第五课】学完、练完本课,足矣应付70%的编程要求。

解释为:循环开启电机和传感器,当超声波传感器探测到前方小于50cm时,终止循环,执行下一步操作。

这个两种时候,我们是保持传感器的开启,并直接调用其数据,来控制循环模块的结束逻辑。

以上三种是用顺序,解决题面。

我们下面再用判断来解决一下这个问题。

4

判断编法

虽然效果一样,但判断编法的思维模式,跟顺序不太相同。

我们要使用判断模块,首先要思考两种情况。

即:符合条件的情况下,我们希望怎么运行;不符合条件的情况下,我们希望怎么运行。

 

这两个思考的结果,都要在程序中有体现。

那么我们首先把判断模块移上去,然后在左下方设定判断的条件。

【EV3基础编程 第五课】学完、练完本课,足矣应付70%的编程要求。

把符合条件、不符合条件的动作分别移到不同的位置。

【EV3基础编程 第五课】学完、练完本课,足矣应付70%的编程要求。

这样,我们的基本程序就完成了。

解释为:当超声波传感器探测前方距离,大于50时,电机开启直行;小于50时,电机关闭。

 

再外层套上循环模块,这样就可以让这个程序持续运行。

【EV3基础编程 第五课】学完、练完本课,足矣应付70%的编程要求。

但是!这个程序完成的结果跟我们的题面有出入。

我们会发现,这个程序这样编写的话,它将一直保持循环状态,程序不会结束。

而我们题面的要求,是程序触发程序停止后,整个程序结束运行

怎么办?

很简单,我们能确定的一点是,程序结束的触发点,是在电机关闭的情况下。所以,我们只要在电机关闭之后的位置上,加上一个“循环停止”模块。这个程序就自然结束运行啦。如下图。

【EV3基础编程 第五课】学完、练完本课,足矣应付70%的编程要求。

5

选择合理的编写方式

虽然我们用不同的方式,可以编写出同样的效果,但它们各自有各自的特点。

本课中提到的第一种,它的特点是:清晰,简单。

在我们编写复杂的程序时,对于很多目的清晰的要求,需要清晰简单,这样会省去很多不必要的麻烦,也不容易出错

【EV3基础编程 第五课】学完、练完本课,足矣应付70%的编程要求。

本课中提到的第二种,它的特点是:可以加入更多的动作。让机器完成更复杂的要求。

这种程序在“动作”扩展上,会很方便,我们可以不断增加更多的需要循环的动作进去。

 

【EV3基础编程 第五课】学完、练完本课,足矣应付70%的编程要求。

本课中提到的第三种,它的特点是:可以处理数据,让数据条件可以设置的更复杂。

这种程序在遇到有复杂的数据处理要求时,会非常的方便,我们可以加入各种不同的数据运算、分类等等处理方法进去,让数据的扩展性变得更强。

【EV3基础编程 第五课】学完、练完本课,足矣应付70%的编程要求。

最后一种,它的特点是:条件清晰,条理清晰。

这种程序在遇到多情况的状态下,可以根据很多不同的情况作出对应的动作。让它们并列共存。

【EV3基础编程 第五课】学完、练完本课,足矣应付70%的编程要求。

好了,今天的课就到这里。这节课是前三节课内容的总结和实操。

希望大家能够感受到这些同样效果的程序不同的区别。

学会在不同的要求下,选择最适合的编程方法,才是关键哦!

课后,大家可以用不同的传感器,都来练习一下。

学会了这些,你已经可以很轻松的面对70%以上的编程要求了。

我们下期,再见!

重点总结

结合三大流程的内容,实际操作。

更好的理解不同编程流程,所对应的各种优点。争取学会“合理编程”

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