第一个任务目标:让车往前直走2s
对于一个没有接触过EV3的孩子来说,一般我会先打个样。
让一个轮子走2s
下载程序后,车子只有一个轮子走2秒,那我们要让车直走,应该需要两个轮子都走才可以。正常孩子都会想到下面的程序。
下载程序后,结果一个A电机轮子先走两秒,接着D电机走两秒,并没有出现我们想要的直走2s的效果。
D电机和A电机换个位置试一下,结果这次D电机先走两秒,接着A电机再走两秒,还是没有出现我们想要的效果。
尽管尝试了两次还是没有得到我们要的效果,但是从上面的尝试中,我们也是得出了一些有用的信息,我们发现谁在前面,谁就先动。可是车要直走,那么两个轮子就必须同时启动,所以谁在前面都是不妥的,因为它们是同等级别的,自然就不能有先后之分,那么要如何解决这个问题呢?
既然前后不行,那我们就并排吧,这样就没有先后之分啦,我们把前面的线给引出两条来,成功解决。这就是并行同步处理(一个点连出两个,三个都是可以的)
除了上面的方法,下面这个方法也是可以的(多任务处理)
记住我也是可以的
回顾总结:通过上面的例子,我们要知道程序它是有先后之分的,在前面的会先执行,之后才会执行后面的。当然了这些都是在顺序流程下来讲的,如果有条件的话,前面的有可能会直接跳过。要实现同时运行的话,可以使用并行同步方式(分支)或者多任务处理方式(多个启动程序,也就是多个开始模块)
第二个任务目标:让车一直往前走
要解决这个问题的话,我们就需要用到一个新的模块 - 循环模块:重复做一件事情,可以有好多种模式,可以无限制模式,也可以指定模式,还可以条件模式等等
我是无限制循环模式
我是指定次数模式,所以我只重复 1 次
我是条件模式,条件有很多种,可以看见障碍物退出循环,可以检测到制定颜色退出循环等等。我是等待时间循环,5秒时间一到我就退出循环
下面开始解决我们的问题了,如何一直往前走呢?
这还不简单嘛,看我的。
嗯,很不错,但是略带瑕疵,每过两秒总会顿一下,没有非常顺畅的效果,苦恼中ing
好了,用下面的方法就可以完美解决了。
偷偷告诉你下面这个方法也可以哦
奇怪,前面一个例子不是说程序是按先后顺序,怎么这里又出现这种情况了呢?
嘿嘿,这里又要解释了,首先在强调一遍,前面说的先后顺序是对的。而这里的方法也是可行的,原因是因为计算机的强大运算能力,执行一个程序指令只需要非常非常非常短的时间(大概可能是0.0001s,总是就是很短啦),以至于可以忽略不计了。
所以上面的程序就可以理解了,A电机动完马上D电机接着,以闪电的速度前后交替重复,以至于你更本就感觉不到有先后之分。
闪烁代表程序在执行,你能看清楚谁先谁后嘛
这个我可以看的清楚,先A电机2s,然后D电机2S,前后交替执行(电机转两秒还看不清那就是瞎子了)
换成并行的就可以了,同时2s,每次两秒结束其实会有一个非常短的的停顿,所以前面车说会走两秒就会顿一下,就是这个原因。
下面再让你看看程序跑的有多快啊,睁大眼睛看清楚了
不用揉眼睛了,你的眼睛没有问题,前面1,20,100本来就看不清楚,调到1000次,也是一闪而过,可见速度有多快。
回顾总结:这个任务我们可以知道循环模块是怎么一回事了(重复执行);程序执行速度是非常快,以至于你都分不清到底有没有先后之分,实际上是有的。
直走其实有更简单的方法
第一种:使用移动转向
第二种:使用移动槽
原理其实和前面的是一样的,只不过软件把它们直接给合在一起了,以后可以直接用这个方法就可以了,但是前面的方法我们也要了解掌握哦
今天关于直行的讲解就到此结束了,谢谢你的阅读,有问题或者建议可以下面留言哦。