模块功能讲解,只剩下高级模块和自定义模块未做说明了,今天一起讲完,了解了模块的功能之后,需要通过实际的运用才能知道不同模块的功能差异,下期谈谈几个实际应用的案例。
-------- {一、高级模块} ---------
(一)、文件读写
这个模块的功能在于将运行过程中产生的数据存储到EV3主机本地,可以跨越程序完成数据的读取和修改(就是本次程序运行中产生的文件,后面的程序运行过程中可以调用),它有四个模式,功能如下:
读取:读取数字或者文本,可以文本的形式读取数字,但是以数字的形式读取文本会显示0。一次可读取文件的一行,从开头开始读取,每读取一次往后移动一行,如果到达文件的最后一行,输出将为 0或者空白(数字形式读取到末尾输出0、文本形式读取到末尾输出空白)。
写入:往指定的文件末尾写入文本,如果文件不存在会新建一个文件,通过内存浏览器可以看到并导出。
删除:将指定的文件从EV3主机内存中移除。
关闭:下次读取将从文件开头开始读取,但是写入还是从文件末尾写入。
下面通过一段程序运行的结果说明这个模块的功能:
程序运行结果:
程序解读:删除文件abc(方便重复运行),清除屏幕,往abc文件中写入循环索引和逗号,重复执行3次,运行完成后文件内的内容为(0,1,2,),按确认键从开头以文本形式读取文件内容,重复7次,文本和数字都会正常显示,读取到文件末尾时会显示空白,所以屏幕显示的第一行逗号后面有空白。
关闭文件,文件末尾写入9,(运行到此处时文件的内容(长度为7)为0,1,2,9),按确认键以数字形式读取内容,并显示在屏幕上,重复运行8次,文本和空白都会显示为0,所以最后的结果是00102090。
需要特别注意的是,每次往文件内写入内容后,加下来的读出会从文件的开头开始读取,相当于写入之后进行了一次关闭,所以上面的程序中去掉关闭模块,运行效果不变,但是如果同时去掉了后面的写入9,后面输出的结果会是8个0,因为文件已经读取到末尾。
(二)、数据日志
这个模块可以按照指定的采样频率测量一个或者多个传感器的参数并存储在文件中,它的关键参数有速率(1-1000)和速率单位(0-每秒采样,1-采样时间间隔)它有四个模式,功能如下:
开启时间:可以选择秒或者分钟
开启:开始数据收集,然后立即继续执行到程序中的下一个模块
单一测量:收集运行到这个模块时刻,对应传感器的单一数据
停止:停止数据收集
这个模块基本不使用,简单测试之后发现他可以保存一段时间内传感器的参数值,并且以图形的形式显示出来,更多的是在实验部分和程序运行过程中完成数据的收集,比赛中可以实时监测机器人的状态(大白老师提示补充),更多功能和用法期待熟悉的老师补充。
(三)、消息传递
这个模块主要完成数据在已经蓝牙连接的多个主机之间的传递,他有三个模式:发送、接收和比较。
右上角的内容为消息的标题,发送和接收、比较需要有同样的消息标题才能正常完成数值的传递,在两个主机的蓝牙已经连接的情况下,可以省去接收程序块名称的输入,通过这种方式可以把一个消息发送给多个已经进行蓝牙连接的主机,实现信息的广播。
比较模式下可以对接收到的文本、数字和逻辑进行比较,并输出比较结果,示例程序如下:
发送端:
EV3可以同时连接多个主机进行消息传递
接收端:
运行视频:
(四)、蓝牙连接
这个模块有四个模式可选择(开启、关闭、创建、清除),具体功能如下:
开启、关闭:可以利用开启、关闭模式,控制主机蓝牙的开关状态。
创建:创建模式可以完成主机和与手动匹配过的主机的自动连接,连接对象的名称,可以通过下拉的方式获取,如果两个主机没有进行过匹配,直接在创建时输入主机名称,运行过程中会报错。
清除:清除模式可以移除匹配过的对象,清除之后再次连接需要重新匹配。
(五)、保持活动
这个模块可以输出主机保持活动至睡眠的持续时间(查看睡眠设置),也可以用来让主机始终保持活动状态,不仅如此休眠模式。
比如设置主机两分钟后进入休眠,那么运行过程中如果程序运行时间超过两分钟,主机就会进入休眠状态,但是使用了保持活动模块之后可以重置睡眠计时器。
在设置主机的休眠时间为零分钟之后,运行下面这段程序,主机会在程序的运行过程中休眠关机,但是上面那段程序中,每隔110秒主机的睡眠计时器会被重置,程序在运行的过程中主机不会出现休眠。
(六)、原始传感器值
这个模块可以输出指定端口的原始传感器值,多用于没有现成编程模块的第三方传感器,手上没有第三方传感器,所以测试不了。
(七)、未校准电机
这个模块可以控制中型电机或者大型电机运动,它跟中型电机和大型电机模块的区别在于,使用未校准电机模块控制的电机,会按照指定的功率转动,但是在遇到较大的阻力时,会自动将功率降至0,防止电机转动过渡,从而保护电机。
普通的中型电机和大型电机模块会检测电机的运行速度是否和设定的功率一致,并且会在电机运动功率低于目标功率时,加大电机的运转功率。
(八)、反转电机
这个模块的功能在于不改变电机功率的情况下,改变电机的转动方向,当反转为真时,这个模块后面的电机控制模块运行后,电机的转动方向都会跟正常的方向相反,当运行反转为假时,电机的转动方向才会恢复正常。
这个模块可以用在满足一定条件电机转动方向需要改变的情况,或者电机倒置情况下想保持原有的操作习惯时,比如:运动到边界返回。
这段程序运行的效果是,电机正转1秒,反转,按下左键,反转,按下右键正转,按下左键,反转1秒,反转关闭,保持正转,按下左键,正转,按下右键反转。
(九)、停止程序
这个模块左侧可以连接序列线,右侧为弧形,不能接后续的模块,当程序运行到这个模块时,程序会中止。
(十)、注释
EV3的注释有两种存在形式,模块中的注释方便进行简短的说明(框子的大小不可调整,输入内容过多时不方便阅读),模块外的注释更适合做大篇幅的说明,可以调整框体的大小。
-------- {二、自定义模块} ---------
自定义模块的存在可以简化程序,减低编程的工作量,提升打开程序的速度,避免程序太大打不开的问题,并且通过自定义模块处理的程序,更容易被阅读,它可以看做是将一个程序段打包放入了一个模块中。
(一)、创建
举个使用自定义模块的例子,使用中型电机驱动车体运动时,车体在前进和后退的过程中,两个电机的功率不同号,在实际的使用过程中经常会出现功率设定的错误,这个时候我们就可以创建一个可以同时控制两个中型电机转动的自定义模块。
1、编写并选中要封装的程序段(不要选中开始)
2、工具——我的模块创建器
3、图标选择及参数设定
选择图标,输入名称(只能由字母、数字下划线组成)和程序描述(方便阅读和使用,可以是中文哦)
参数图标界面可以为条件的参数选择图标,建议选择时跟参数的用途或者类型匹配,(论坛有添加自定义图标的教程,感兴趣的可以去论坛挖坟)控制A和D端口电机的转动,图标就选了a和d。
参数设置界面可以编辑参数的名称、类型、数值范围、默认值和参数的外观。
完成了相关设定之后可以点击右下角的完成按钮,完成自定义模块的创建。
创建时a和d的类型为输入,motor模块的内部就会得到a和d两个输出,需要手动完成这两个数据的分配。如果创建motor时选择了一个参数作为输出,那么这个模块的内部就有一个输出需要提供数据。
完成了参数的设定和连接动作之后,这个自定义模块才算基本完成。
(二)、自定义模块的使用和导出、导入
1、使用:
创建自定义模块时,会在原程序段的位置生成一个自定义模块,想要重复利用的话,可以在最后一个抽屉中拖拽,拖拽出来的参数会为设定的默认值。
光标移动到参数上时,可以看到参数名称。
2、导出和导入:
会重复使用到的自定义模块可以导出之后单独保存,后续需要使用的时候不用重新编辑直接导入即可。
在项目属性(小扳手)界面可以看到这个项目下的子程序、声音、图像、变量、我的模块和可导出的项目,其中子程序和自定义模块是可以导出的。
选中需要导出的自定义模块就可以导出到指定的文件目录下。
点击下面的导入按钮,可以导入之前保存的自定义模块和子程序,扩展名都是.ev3s
(三)、自定义模块修改
自定义模块的修改可以双击拖拽出来的自定义模块或者点击模块左上角的齿轮按钮。如果只是改变自定义模块的内容,双击即可,还有更多的需求(改名称、参数、默认值、类型等)就点击编辑按钮。
调整完之后点击完成会进入程序段编辑界面
修改完之后就得到你想要的自定义模块了,所以如果创建过程中有失误的地方可以使用编辑功能重新调整。
完
更多精彩内容,欢迎持续关注。
声明:转载自公众号“LCR乐工坊”。
◆◆
精彩回顾
◆◆
河南全省学校推广人工智能教育
◆◆
扫码关注◆◆
关注公众号,更多精彩
◆◆
知识社群◆◆
加入知识社,更多干货!