![乐高机器人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=1738920443-CT1LOoUE9nvCzXIptCuFT41jlkMnZgmy-0-60d201ab54c2bf55aa2a33f10e7fbfb8)
乐高Mindstorms EV3编程工作面板
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/11-1.jpg?sign=1738920443-mjZGETbj7q0rQjV4jAcZNoepxeWfiMIq-0-d1de4b3eb0064d3a47d4953f02c0a3c4)
打开“驱动基座”安装手册的地址
1.移动转向模块
移动转向模块是所有EV3使用者都应该知道如何使用的一个极为重要的模块,它是控制EV3移动的最基本、最简单的模块。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/11-2.jpg?sign=1738920443-ihsilXGA2oOAknjhUrOAJUVMcnbo3j8a-0-4a9dd14aa9f5d56f838008e601d0d407)
程序案例1
本程序先让机器人向前行驶3秒,再向左转弯,电机转50°,再向前走一段距离,最后后退。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/12-1.jpg?sign=1738920443-G44Vo9KD8xmbTLWKOKpB6vxDkTXLId6J-0-4756bcb20961ec458a60cef6f91bea0a)
2.等待模块
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/12-2.jpg?sign=1738920443-vuVSEzVUk2dNuG8CkhCJQD0CcegdZTV3-0-023501f80aeb1bfcb145387a43e6a6bb)
3.循环模块
循环模块是一个非常重要且可以让许多模块依次循环的“神奇”模块。它可以设置停止条件—当“循环”模块结束时判断停止条件是否达成,如果达成,就会结束循环。如果你想让条件一达成就停止循环,试试“循环中断”模块吧。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/12-3.jpg?sign=1738920443-LEkTMNTB5gVIcFMHfkueHgbv7UxqQzHO-0-fef5963b734d7476f0c4af4ed0111952)
4.切换模块
切换模块使程序块在若干个选项里以当前的状况进行选择。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/13-2.jpg?sign=1738920443-3bJg0MjjB4nHAWzdaFvjIVdeJ6X60nma-0-4ba90c59d4c7618c5a3ef97b88d7eb44)
程序案例2
本程序先让A端口的中型电机以每分钟50转的速度开始正转,再让D端口的大型电机正转6秒,之后让A端口上的中型电机反转1秒的同时让C端口的中型电机正转20圈。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/13-1B.jpg?sign=1738920443-Q0k095hIw8mHHMvYi9Cl1WI3mw3RZW5r-0-848b5afa4335784447c9f615921ab3f9)
程序案例3
本程序先检测D端口上的电机角度,再把这个数字显示到屏幕上。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/14-1.jpg?sign=1738920443-txkn8kYkIIHyHaytQMxm3aHmdZT7Y2UJ-0-1053788b956197f669482e3eeee47c3f)
程序案例4
本程序检测3端口上的颜色传感器的颜色为红色还是黑色(如果是其他颜色默认为黑色),如果是红色就向左转,持续3秒;如果是黑色就向右转,持续3秒,一直循环。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/14-2.jpg?sign=1738920443-E4bnxibAJUA6f1c4Zs3M2WBJr4cTUu6U-0-23b6907ad875be39ec3dfa20375f3b8c)
程序案例5——巡线程序
巡线程序是EV3里一个非常经典且实用的程序,它的作用是让机器人一直沿线前进。它的原理是当颜色传感器检测到某颜色(此处为黑色)时右转,检测到另一颜色时(此处为白色)时左转。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/15-1.jpg?sign=1738920443-DfUWFclzmrj60PY7wIcLTtPCfUmAzMWF-0-a683d47317d9f98878d9e0d1ec4ace4b)
程序案例6
本程序先等待上或下程序块按钮被按下,再根据按的按钮决定前进还是后退。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/15-2.jpg?sign=1738920443-W9u4OiKX7Uwjaywz5B5edWTs9MTgDkt9-0-9331d67f9e13b09cc39f85bef366a6ae)
程序案例7
本程序先让车向前移动一段距离,再让D端口上的电机转1圈,如此循环,直到触动传感器被按下,最后向前移动一小段距离。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/16-1.jpg?sign=1738920443-QwGKGJEac3bswLoQKCiJZTtP4R9NQkAm-0-a0fc63bffd8eb0f403480ebd9524be59)
程序案例8
本程序检测A端口的电机的角度,再根据度数来调整程序块上发出的音量。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/16-2.jpg?sign=1738920443-WKtb3z02gwbBwg6hoLuYKuqKnZPldyBv-0-b15177b82fee15cd1cda7c8190879460)
5.变量模块
变量模块是EV3复杂程序中非常重要的一个模块。它使EV3记住一个数字、逻辑或一些文本,到需要时读取出来。你可以在一个程序中设置多个变量。
注意:变量模块的名称与变量的作用没有关系。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/17-1.jpg?sign=1738920443-dl6YYPaoDStVlzwelOfJgXI4gei5uODs-0-93115fa686ccc11b6ce18ba85ce1560d)
程序案例9
本程序在程序块显示屏上显示灯开的时候,按一下程序块按钮,灯关;在关的时候,按一下灯开,一直循环。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/17-2.jpg?sign=1738920443-22cXTlCKtsFoYTbnQcnQB1fxznMLE0nB-0-b83e20d361ed8b6794f4e800c9f10040)
6.范围模块
范围模块判断一个数字是否在两个另外的数字(上限、下限)之间。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/17-3.jpg?sign=1738920443-x1VQUa9OKOfHAGv5xbP30nZlIXsQnl6v-0-1cb370ba9707638bf8414cee7cfea7a6)
程序案例10
本程序测试3端口的颜色传感器的反射光线强度,如果光线强度在45~55之间就显示勾号,如果不是就显示叉号。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/18-1.jpg?sign=1738920443-ZpmDLxAtMvS5Fm1MEX9XkxMr6MLLcSil-0-54f9787987859ac200cf17bcf5562379)
7.数学运算
“数学运算”模块把一个数字或多个数字自动进行一个或多个运算。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/18-2.jpg?sign=1738920443-tYRjtUDjnJPnR6ZsfMn7hFLSoWZSbZHq-0-0a03ac685b227912fea9504c92662963)
程序案例11
本程序把当前的电机角度除以3后与颜色传感器反光值相乘,再把这个值显示到屏幕上。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/18-3.jpg?sign=1738920443-RBBsIoZntNN6MRPcH7OrnMOh9Pf2MMR1-0-98be91e0d786d56c0f3046f6e51e6042)
程序案例12
本程序是一个“近程”遥控器。当机器人检测到左边(端口2)的触碰传感器被按下时,它就会驱动左边的电机,使机器人向右走;当检测到左边的触碰传感器被按下时,就会驱动右边的电机,使它左转。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/19-1.jpg?sign=1738920443-uLuL9KzX3PXeb1pHXXAfv0INgrbHfgR0-0-5fb3969a8bef4edec6f9ed2b33fb168b)
程序案例13
本程序先让机器人向前行驶,并稳定0.5秒后只要C端口(和B端口的速度差不多)的电机的速度处在48~52r/min的范围之外就会被判定为撞墙,就会往后退,并且说“sorry”,以此一直循环。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/19-2.jpg?sign=1738920443-Kzl1OLQLMsIiS1FJw6Al3h8lLVxAKVCI-0-94c34a7a14e6f24ec0d43d9a771dee30)
程序案例14
本程序测试触动传感器被按动的时间有多长,再根据按动的时间规定它行驶的角度。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/19-3.jpg?sign=1738920443-WSsZJzOefI5Gr8gMU7v62IqGXVYUVYDo-0-09a459389d435552936b7e1052a692a2)
8.消息传递模块
“消息传递”模块用蓝牙来完成消息的传递,它是机器人远程无线相互传递消息的不可或缺的一个模块。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/20-1.jpg?sign=1738920443-F8V41Qa57tz3476z0Gv9dzKLPFEIlSzx-0-7d3c8605731372a36d8037591c91bbf5)
9. EV3蓝牙使用指南
① 打开EV3,打开【设置】;
② 打开【Bluetooth】栏,勾选【Bluetooth】选项;
③ 打开【Connections】,点击【Search】选项,稍候至绿灯亮起;
④ 选择要连接并已经打开的EV3,选择【Connect】并静候至绿灯亮起。
程序案例15——蓝牙遥控汽车
第一个程序块(遥控器)上的程序:本程序测试左(和右)程序块按钮是否被按下,如被按下就向名为“car”的程序块发送逻辑消息“真”,反之则发送消息“假”。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/20-2.jpg?sign=1738920443-mDU4nbTAcxnYCItjcO7vPW9nM1xrfyFc-0-9f057fd71edc25f59e51bac5a122ea36)
第二个程序块(车)上的程序:本程序让机器人接收第一个程序块(遥控器)传来的指令,根据信息判定是否要转动电机。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/21-1.jpg?sign=1738920443-5wGJXMvHMXQSUeWCkTgLrar6DHBHhgIu-0-e098d84d3715fbd814c5658e9e79491c)
10.我的模块
有时候我们希望可以自己设计一个程序模块,乐高机器人EV3编程软件里就有这样一个功能。现在就介绍一下创建“我的模块”方法。
① 框选要制作为“我的模块”的模块(注意:不要框选到【开始】模块),点击【工具】—【我的模块创建器】。
② 编辑模块【名称】【描述】及【“我的模块”图标】,完成后点击【完成】。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/21-2.jpg?sign=1738920443-f4V88sFlEUhZ5vGkUzbGyxSv2pxY6qWc-0-1b7449fc8d35be2ebadd04398509e126)
程序案例16——秒表
想必大家都使用过秒表,它是一种能计时的工具,有些还带有计次功能。本案例就是要制作一个有计次功能的秒表。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/22-1.jpg?sign=1738920443-90RtJQhXQxPSQAdFx6itxeaHZ5vUAIpf-0-d342bba52856e91ec8898a8ac8fd5c74)
开始编程前,先设定4个变量如下:
● time 数字型,用来保存上次暂停时的时间;
● start 逻辑型,用来判定秒表是否在“开始”状态;
● time 数字排列型,用来保存计次数据;
● jicipg 数字型,用来记录当前显示的是第几页计次。
① 准备部分 清屏,重置时间。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/HB-19-1.jpg?sign=1738920443-wsvsWSu7tAGSBL9H2C8x4zLtumzbSu96-0-cb2c2e95278fa84ee421b47af224e416)
② 计时器开始/暂停的控制 检测端口1上的触动传感器是否被按下,如果被按下,就再检测是否正在计时(即检测名为“start”的逻辑变量是否为“真”)。如果在计时,则停止计时,把变量“start”设为“假”,将数字变量“time”加上计时器上的值;如果不在计时,则开始计时,把变量“start”设为“真”,将计时器归零。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/HB-19-2.jpg?sign=1738920443-b2Wex3hMPK4BCaqJG1iERym9bdZsQQfo-0-19b0ba237237a70a1253a7e2cb0aa84b)
③ 负责计次的“add_jici”模块
制作方法:先拼起上图中的模块,再框选出刚刚拼起的模块,点击【工具】—【我的模块创建器】,将模块名称设为“add_jici”,点击【确定】即可创建“add_jici”模块。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/23.jpg?sign=1738920443-qmuc6hYUWvC8koFRrjICInF4tAhvMUiN-0-5015d0f06510cfb6d4b221f085837c41)
④ 负责控制计次/清零的端口2 本程序检测端口2上的触动传感器是否被触发,如被触发,则检测秒表是否为“开始”状态,如为“开始”状态,则计次;如不为“开始”状态,则清零。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/HB-20-1.jpg?sign=1738920443-gbdt3a25IxbUcFvdSKtjqPkjD0CvCnzj-0-23d68426dcc3bf22d866c775d686c07c)
⑤ 负责给计次翻页的程序块按钮 本程序检测上程序块按钮或下程序块按钮是否被触发,如下程序块按钮被触发,则将变量“jici_pg”加1(即为将计次页数向后翻一页),等待松开程序块按钮,松开后清屏并继续程序;如上程序块按钮被触发,测试计次页数是否大于或等于1,如是,则将变量“jici_pg”减1(即为将计次页数向前翻一页),等待松开程序块按钮,松开后清屏并继续程序。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/HB-20-2.jpg?sign=1738920443-9QBFNjUamOjsI2zqjGc4sLYt5fO3dWZZ-0-2f3f2d96435c862e70d5cfdb7077f927)
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/13.jpg?sign=1738920443-2bMMl1htbJv77yHQofQD9A1aA1hDipxu-0-43b3802635f99392bfb634c980eb747b)
⑥ 用来显示计次的程序 一个“jici”模块只会显示一排计次,所以要实现在同一个屏幕上显示5排计次就需要运行5次。制作“我的模块”需要拼砌程序(不需要连接数据线)后点击【添加参数】按钮。设置参数后点击【完成】方可连接数据线。“jici”模块的工作原理是将变量“jicipg”乘以5后与计次在本页的序号(也就是x+1)相加,得到的数字为计次编号。如果这个数字比计次的总数低,就可以显示,如果大于或等于这个数,则不可显示,否则程序会崩溃,因为有未定义的变量。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/26-1.jpg?sign=1738920443-yisLcuyt8m2bAdrruB12I7beKeUH4kmn-0-0c9a433f86a654ca598f3ad71624b413)
⑦ 用来显示时间的程序 本程序循环检测秒表是否为“开始”状态,如为“开始”状态,则将数字变量“time”的数值和计时器秒数相加并显示到屏幕上。
想知道更多关于EV3的知识,请在编程软件里点击【帮助】—【显示EV3帮助】。
![](https://epubservercos.yuewen.com/24AB70/18372757408384106/epubprivate/OEBPS/Images/26-2.jpg?sign=1738920443-0R3i5vxkvViIF62y7MiUvVJoMmDs3i8a-0-040bfec2577dd4cdaaa061e30494141d)
❶ 这里所介绍的零件只是指本书中所用到的主要零件。