在马路上行驶了很久的智能小车,感觉有些累了,想回家休息。让我们一起帮助它,从A点以最短的距离回到B点的家。
![1576142972129477.png blob.png](/ueditor/php/upload/image/20191212/1576142972129477.png)
图2-1 “让智能小车回家”范例作品示意图
要制作本课的范例作品,需要认识以下这些模块:
电机(又称“马达”)是依据电磁感应原理将电能转换为机械能的一种装置,很多常用电器和机械的动力源使用的就是各种各样的电机。好好搭搭智能小车有两个电机,主要通过电机模块分别驱动左右两个轮子实现行走(如下图2-2所示)。
![1576142989205463.png blob.png](/ueditor/php/upload/image/20191212/1576142989205463.png)
图2-3 智能小车电机
![1564647528269859.png blob.png](/ueditor/php/upload/image/20190801/1564647528269859.png)
| 仔细观察好好搭搭智能小车,它的两个电机分别位于智能小车的_______________,连接主控板的______、______端口。 |
要制作本课的范例作品,还需要使用以下新的指令:
![1576143001595464.png blob.png](/ueditor/php/upload/image/20191212/1576143001595464.png)
使用这个指令可以设置指定端口电机的输出值,控制电机的转速。
指令默认是连接到“MA”端口的,电机输出值为“150”。通过单击第一个参数的下拉列表,可以选择电机的连接端口:MA、MB和M2;通过单击第二个参数的下拉列表或者直接输入,可以设置电机的输出值,它的取值范围是(-255,255)。
![1564647539349591.png blob.png](/ueditor/php/upload/image/20190801/1564647539349591.png)
| 请编写如下图2-3所示的程序,然后根据下方表格中的数据分别设置电机输出值,编译下载到智能小车后运行,观察不同参数下智能小车的运行状态,最后将观察结果记录到表格中。 注意:运行程序前请确认智能小车的左电机和MA端口相连、右电机和MB端口连接 |
|
![1576143010546974.png blob.png](/ueditor/php/upload/image/20191212/1576143010546974.png)
图2-3 “双电机驱动”指令“试一试”程序代码
![1576143053470783.png blob.png](/ueditor/php/upload/image/20191212/1576143053470783.png)
我发现:好好搭搭智能小车的左右电机输出为正值时,小车向_____行驶;左右电机输出为负值时,小车向_____行驶;电机输出为_____时,小车停止行驶;电机输出的绝对值越大,小车行驶越_____。
在数学课中,我们了解到:两点之间直线距离最短。要让小车以最短的距离回家,可以让小车直接从A点沿直线行驶到B点。编程时可以分两步来完成:首先启动电机并运行一段时间,然后停止电机,具体程序流程图如下所示:
![1576143065979794.png blob.png](/ueditor/php/upload/image/20191212/1576143065979794.png)
图2-4 “让智能小车回家”范例作品程序流程图
将上图2-3所示程序代码中的左右电机输出值都设置为“150”,使智能小车以150的速度向前直行。具体程序脚本如下图所示:
![1576143079924875.png blob.png](/ueditor/php/upload/image/20191212/1576143079924875.png)
图2-5 “智能小车直行”程序代码
运行上图2-5所示程序,智能小车已经能够向前行驶了。但由于没有时间的限制,它会一直向前行驶。要设置智能小车的行驶时间,可以再添加“控制”类别中的“等待”指令。具体程序脚本如下图所示:
![1576143092341776.png blob.png](/ueditor/php/upload/image/20191212/1576143092341776.png)
图2-6 “智能小车直行后等待”程序代码
![1564647621336471.png blob.png](/ueditor/php/upload/image/20190801/1564647621336471.png)
| 按照这样的程序运行,智能小车能停下来吗?问题出在哪里?该怎么解决? |
我发现:________________________________________________________________
_______________________________________________________________________
第二步编写的程序虽然设置了等待时间,但智能小车从A点行驶到B点后并没有停下,而是继续行驶。这是由于程序中缺少了让智能小车停止行驶的程序代码造成的,可以在原有程序的基础上,再添加两个“设置双电机”指令,设置它们一个驱动“MA”、另一个驱动“MB”电机,“电机输出”参数都设为“0”,停止左右电机的转动、让智能小车停下来。
具体的程序脚本如下图所示:
![1576143116863413.png blob.png](/ueditor/php/upload/image/20191212/1576143116863413.png)
图2-7 “让智能小车回家”程序代码
![1564647633198899.png blob.png](/ueditor/php/upload/image/20190801/1564647633198899.png)
| 不同的小车,不同的环境,要达到同样的效果,“电机输出”及“等待”的数值会不相同。因此需要根据实际情况进行调试,直到完成从A点到B点“回家”的任务。请将调试过程记录到下面的表格中。 |
![1564647693194583.png blob.png](/ueditor/php/upload/image/20190801/1564647693194583.png)
一起用智能小车玩“夺分奇兵”的游戏吧!最后比一比谁的得分最高。
游戏规则:智能小车从起点沿着分数点行驶,如果准确到达一个分数点后,能够停止3秒再继续行驶,那么这个分数点的分数可以计入总分。
![1564647796763932.png blob.png](/ueditor/php/upload/image/20190801/1564647796763932.png)
经过调试、比赛,我所编写的智能小车程序最高得分是____分,这个程序保存在“好好搭搭”网站上的名称是_____________________。将作品共享了以后,有____人给我点赞;综合别人给我提的建议,我认为还可以在以下方面进行改进:___________________
______________________________________________________________________。
阅读材料二:初步了解程序流程图
流程图是一种用图形表示算法的图。使用流程图可以帮助我们分析过程、理清思路。而程序流程图是以特定的图形符号加上说明,表示为完成某一任务而采取的方法和步骤。
一、 程序流程图的符号
程序流程图通常用一些图框来表示各种操作,直观形象、易于理解。它主要包括三个部分:表示各种操作的框、带箭头的流程线以及框内必要的文字说明。以下是几种常用的程序流程图符号:
![1564647827654366.png blob.png](/ueditor/php/upload/image/20190801/1564647827654366.png)
二、 程序的三种基本结构
程序有三种基本结构:顺序结构、选择结构和循环结构。
1. 顺序结构:这是一种最简单、最常用的程序结构。只需按照解决问题的先后顺序写出相应的语句即可。它的执行顺序是自上而下,依次执行的。如下图所示,智能小车先直行3秒,然后停止,这就是顺序结构。
![1576143152876785.png blob.png](/ueditor/php/upload/image/20191212/1576143152876785.png)
2. 选择结构:这种程序结构主要用于判断给定的条件,并根据判断的结果来选择不同的操作。如下图所示,当智能小车检测到的声音小于2000时右转;否则智能小车左转。
![1576143172366822.png blob.png](/ueditor/php/upload/image/20191212/1576143172366822.png)
3. 循环结构:这种程序结构表示反复执行某一操作,可以减少程序重复书写的工作量。如下图所示,智能小车的液晶显示屏上重复不断地显示着变量n的最新值。
![1576143185312512.png blob.png](/ueditor/php/upload/image/20191212/1576143185312512.png)