![乐高机器人EV3设计指南:创造者的搭建逻辑](https://wfqqreader-1252317822.image.myqcloud.com/cover/505/34354505/b_34354505.jpg)
任务2 乐高EV3编程指南
作者:李彭嘉(人大附中航天城学校)
乐高Mindstorms EV3(后文简称EV3)编程软件是一种图形化的编程软件。它使用抽象的彩色模块来创建程序,这些模块分别在六个不同颜色的选项卡里——绿色代表动作模块,橙色代表流程控制模块,黄色代表传感器模块,红色代表数据操作模块,蓝色代表高级模块,青色代表“我的模块”。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/101.jpg?sign=1739470879-teHZXnfLVixeLDXMhbqmiGa2k4tG6MnM-0-f9e43283b56f0c9afea849dee788c513)
乐高Mindstorms EV3编程工作面板
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/11-1.jpg?sign=1739470879-9XSZ6nbDshCuxKFwT26ZFh1pvVmLAarD-0-7cb9aafd45df4f38d1f38d49a2111f9a)
打开“驱动基座”安装手册的地址
1.移动转向模块
移动转向模块是所有EV3使用者都应该知道如何使用的一个极为重要的模块,它是控制EV3移动的最基本、最简单的模块。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/11-2.jpg?sign=1739470879-PTmmpig5k0bLPL6KOXoR86mwyecNfamI-0-745de3bec2b9f822537e595a74fca61b)
程序案例1
本程序先让机器人向前行驶3秒,再向左转弯,电机转50°,再向前走一段距离,最后后退。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/12-1.jpg?sign=1739470879-ctNBh5byeLUMVIAZzx1iBeZrSqrgsr4v-0-ecb71db5c82e840ac7f6ddfe4d221b89)
2.等待模块
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/12-2.jpg?sign=1739470879-qs1UvbkOOJ6NG5WQAEtMdbUwgNlOjaTb-0-9aa7018780277213861d8f4c199c82b0)
3.循环模块
循环模块是一个非常重要且可以让许多模块依次循环的“神奇”模块。它可以设置停止条件—当“循环”模块结束时判断停止条件是否达成,如果达成,就会结束循环。如果你想让条件一达成就停止循环,试试“循环中断”模块吧。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/12-3.jpg?sign=1739470879-3MnwQi3sqlMLVQ3QMTRHT2mSf3FBu4Vm-0-f10422309b19f5730da30bdf9289b752)
4.切换模块
切换模块使程序块在若干个选项里以当前的状况进行选择。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/13-2.jpg?sign=1739470879-ZwliXMRxzavfTDSq9DGKPSlLFhgQdxj3-0-5beb8371155b289058775e0fdd3041be)
程序案例2
本程序先让A端口的中型电机以每分钟50转的速度开始正转,再让D端口的大型电机正转6秒,之后让A端口上的中型电机反转1秒的同时让C端口的中型电机正转20圈。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/13-1B.jpg?sign=1739470879-xHms2XxbQCyJAmmrlphDlIDfmzjPLIBP-0-29fe8005db287f8945ce8cbf1aa83763)
程序案例3
本程序先检测D端口上的电机角度,再把这个数字显示到屏幕上。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/14-1.jpg?sign=1739470879-IOw3lvgbEiWCDxomHz8JibbcVQds9Y0H-0-abdae4223777009f37bbaa1ef51f990d)
程序案例4
本程序检测3端口上的颜色传感器的颜色为红色还是黑色(如果是其他颜色默认为黑色),如果是红色就向左转,持续3秒;如果是黑色就向右转,持续3秒,一直循环。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/14-2.jpg?sign=1739470879-a4MBKCTZFIDIuWjI1nLkM1H6yMijcmwv-0-47ee494be3244dc2ac7332174fb028ff)
程序案例5——巡线程序
巡线程序是EV3里一个非常经典且实用的程序,它的作用是让机器人一直沿线前进。它的原理是当颜色传感器检测到某颜色(此处为黑色)时右转,检测到另一颜色时(此处为白色)时左转。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/15-1.jpg?sign=1739470879-Au0qlfs1ujUlT04ePFc3HZuabUkBpfJY-0-14c1bc8df71de4ade0814fbe68177d6f)
程序案例6
本程序先等待上或下程序块按钮被按下,再根据按的按钮决定前进还是后退。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/15-2.jpg?sign=1739470879-6k1U3LlgBD6PoeQED6JTGOl2Wq9RgnW0-0-b001f0a34914ef47dc749abcef5c5fc9)
程序案例7
本程序先让车向前移动一段距离,再让D端口上的电机转1圈,如此循环,直到触动传感器被按下,最后向前移动一小段距离。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/16-1.jpg?sign=1739470879-Me478thGD3nTvq9j93vJZiHtzYtZjbAE-0-28151c772d73744dda18f1d49cd9d0be)
程序案例8
本程序检测A端口的电机的角度,再根据度数来调整程序块上发出的音量。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/16-2.jpg?sign=1739470879-ZopA55UQzOADwLAvCqgAPekkAc6IqaZl-0-af2026041f47c2eb3b4de19d595f2693)
5.变量模块
变量模块是EV3复杂程序中非常重要的一个模块。它使EV3记住一个数字、逻辑或一些文本,到需要时读取出来。你可以在一个程序中设置多个变量。
注意:变量模块的名称与变量的作用没有关系。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/17-1.jpg?sign=1739470879-iFl1dAnSAIn1Rk52ZuRDopRZ7HCRxTVE-0-5ae749b6d90892ec49a33580942e88ad)
程序案例9
本程序在程序块显示屏上显示灯开的时候,按一下程序块按钮,灯关;在关的时候,按一下灯开,一直循环。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/17-2.jpg?sign=1739470879-PuRpCQU7xj1eaYAiKSNfstn5n59Mz9Ag-0-fe5ccc66eb027a7ba57be4a3cdb1ae3f)
6.范围模块
范围模块判断一个数字是否在两个另外的数字(上限、下限)之间。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/17-3.jpg?sign=1739470879-nqTW2lFXZqah1o6rQ27btvFnJod5K3ua-0-33753ec85442594d2ee83bba25b221e5)
程序案例10
本程序测试3端口的颜色传感器的反射光线强度,如果光线强度在45~55之间就显示勾号,如果不是就显示叉号。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/18-1.jpg?sign=1739470879-xMJl8YsrZf5KiHiydjtrtF8p14WIVDiv-0-f09accdc45baf61a37321bdd2d856430)
7.数学运算
“数学运算”模块把一个数字或多个数字自动进行一个或多个运算。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/18-2.jpg?sign=1739470879-2IQYjyCj2ZA4V3d2s7FnyExuXu7d52ff-0-17be601a205fabdb83debc4c6ce5c850)
程序案例11
本程序把当前的电机角度除以3后与颜色传感器反光值相乘,再把这个值显示到屏幕上。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/18-3.jpg?sign=1739470879-BjRTXdbgXNyUpEphOOEsK1j1KQf1Rz2d-0-aa1077b38111a092ed4e784892814d02)
程序案例12
本程序是一个“近程”遥控器。当机器人检测到左边(端口2)的触碰传感器被按下时,它就会驱动左边的电机,使机器人向右走;当检测到左边的触碰传感器被按下时,就会驱动右边的电机,使它左转。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/19-1.jpg?sign=1739470879-yK9HhYy0JyZydSRTIqyuUwJiwwOuD4iQ-0-9b974ccc81d804041eae1cba54c66307)
程序案例13
本程序先让机器人向前行驶,并稳定0.5秒后只要C端口(和B端口的速度差不多)的电机的速度处在48~52r/min的范围之外就会被判定为撞墙,就会往后退,并且说“sorry”,以此一直循环。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/19-2.jpg?sign=1739470879-UiXv85jpgtVprKz0mhoSkYqWjOpV08AJ-0-60ed14849994929d5c3fb16a0484be5c)
程序案例14
本程序测试触动传感器被按动的时间有多长,再根据按动的时间规定它行驶的角度。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/19-3.jpg?sign=1739470879-MmkBFuvhtYBipsSgMemRSdKcClZqRx0w-0-94908a24b6afbc6d3068a95a30851dbc)
8.消息传递模块
“消息传递”模块用蓝牙来完成消息的传递,它是机器人远程无线相互传递消息的不可或缺的一个模块。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/20-1.jpg?sign=1739470879-UE5VCiIRtHy3CnGnSGqWgwdtawEGZZ5z-0-3c8ea5656827816413ab25180cdfb7f8)
9. EV3蓝牙使用指南
① 打开EV3,打开【设置】;
② 打开【Bluetooth】栏,勾选【Bluetooth】选项;
③ 打开【Connections】,点击【Search】选项,稍候至绿灯亮起;
④ 选择要连接并已经打开的EV3,选择【Connect】并静候至绿灯亮起。
程序案例15——蓝牙遥控汽车
第一个程序块(遥控器)上的程序:本程序测试左(和右)程序块按钮是否被按下,如被按下就向名为“car”的程序块发送逻辑消息“真”,反之则发送消息“假”。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/20-2.jpg?sign=1739470879-nfnSHA3ImFQ6Zc8quIrIyzs9annuogZm-0-276a1202a45385803d59437ea12d8d5a)
第二个程序块(车)上的程序:本程序让机器人接收第一个程序块(遥控器)传来的指令,根据信息判定是否要转动电机。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/21-1.jpg?sign=1739470879-QCKVQeSR8i3fU7Afa6ZQ3iv8UAmsqGxL-0-5bf2bab6453abb00fce618f270e9e059)
10.我的模块
有时候我们希望可以自己设计一个程序模块,乐高机器人EV3编程软件里就有这样一个功能。现在就介绍一下创建“我的模块”方法。
① 框选要制作为“我的模块”的模块(注意:不要框选到【开始】模块),点击【工具】—【我的模块创建器】。
② 编辑模块【名称】【描述】及【“我的模块”图标】,完成后点击【完成】。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/21-2.jpg?sign=1739470879-RCFU58eGdzSRDSUCh7BP3XrNAsnvgKaV-0-2974f117ea45787a193fdf91a37a3f63)
程序案例16——秒表
想必大家都使用过秒表,它是一种能计时的工具,有些还带有计次功能。本案例就是要制作一个有计次功能的秒表。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/22-1.jpg?sign=1739470879-QaWPBpXhYnZSNRRpYIuzr7NyKDaeiQPh-0-cd85f544d98a4f5f17f54ef39d31e7e2)
开始编程前,先设定4个变量如下:
● time 数字型,用来保存上次暂停时的时间;
● start 逻辑型,用来判定秒表是否在“开始”状态;
● time 数字排列型,用来保存计次数据;
● jicipg 数字型,用来记录当前显示的是第几页计次。
① 准备部分 清屏,重置时间。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/HB-19-1.jpg?sign=1739470879-UuFUkc93KavHdZR7sY95x5tCJJZ0Jhp3-0-fa26890e90205287dafba25c34cb9b52)
② 计时器开始/暂停的控制 检测端口1上的触动传感器是否被按下,如果被按下,就再检测是否正在计时(即检测名为“start”的逻辑变量是否为“真”)。如果在计时,则停止计时,把变量“start”设为“假”,将数字变量“time”加上计时器上的值;如果不在计时,则开始计时,把变量“start”设为“真”,将计时器归零。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/HB-19-2.jpg?sign=1739470879-9StnQg6cHOQEQmWg9S8fXNwaPbhbW8JV-0-8c77676fa51e1152ea79cab95ff1747c)
③ 负责计次的“add_jici”模块
制作方法:先拼起上图中的模块,再框选出刚刚拼起的模块,点击【工具】—【我的模块创建器】,将模块名称设为“add_jici”,点击【确定】即可创建“add_jici”模块。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/23.jpg?sign=1739470879-HN4MVqEV7LFLAP2VtRtmdxmWA27Ng6df-0-8b9b31ebb266f122fe18c30fee41ea84)
④ 负责控制计次/清零的端口2 本程序检测端口2上的触动传感器是否被触发,如被触发,则检测秒表是否为“开始”状态,如为“开始”状态,则计次;如不为“开始”状态,则清零。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/HB-20-1.jpg?sign=1739470879-6OnfqEjBLrDrLkvQTkgAAcqVJkru1e5g-0-2d342058d6cea4705fe2db719cbd332f)
⑤ 负责给计次翻页的程序块按钮 本程序检测上程序块按钮或下程序块按钮是否被触发,如下程序块按钮被触发,则将变量“jici_pg”加1(即为将计次页数向后翻一页),等待松开程序块按钮,松开后清屏并继续程序;如上程序块按钮被触发,测试计次页数是否大于或等于1,如是,则将变量“jici_pg”减1(即为将计次页数向前翻一页),等待松开程序块按钮,松开后清屏并继续程序。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/HB-20-2.jpg?sign=1739470879-7Sp3IQ8LCTbbjC8Nhyv8hIPJECPR8vcp-0-86e89f228fce64cb4875503288d07b88)
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/13.jpg?sign=1739470879-Dc8gGd2IGGh3s9hxq7zxjHxXlIWfCphT-0-cbcabaed8fb4260864aecc8b206fa066)
⑥ 用来显示计次的程序 一个“jici”模块只会显示一排计次,所以要实现在同一个屏幕上显示5排计次就需要运行5次。制作“我的模块”需要拼砌程序(不需要连接数据线)后点击【添加参数】按钮。设置参数后点击【完成】方可连接数据线。“jici”模块的工作原理是将变量“jicipg”乘以5后与计次在本页的序号(也就是x+1)相加,得到的数字为计次编号。如果这个数字比计次的总数低,就可以显示,如果大于或等于这个数,则不可显示,否则程序会崩溃,因为有未定义的变量。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/26-1.jpg?sign=1739470879-Pg8wIvUMMfLwObXluYamMKeXzhptf67x-0-6429d6327f3e7a864fce1e36b5c8346d)
⑦ 用来显示时间的程序 本程序循环检测秒表是否为“开始”状态,如为“开始”状态,则将数字变量“time”的数值和计时器秒数相加并显示到屏幕上。
想知道更多关于EV3的知识,请在编程软件里点击【帮助】—【显示EV3帮助】。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/26-2.jpg?sign=1739470879-pR2ZTW29NfxehiSjIxg1WDswtwGqUv1s-0-00370393c184bcbd2684c3ee4b9b1b8a)
❶ 这里所介绍的零件只是指本书中所用到的主要零件。