ev3爬楼梯机器人编程_乐高机器人 | EV3编程高级模块——它们都很高级!

2023-05-16

模块功能讲解,只剩下高级模块和自定义模块未做说明了,今天一起讲完,了解了模块的功能之后,需要通过实际的运用才能知道不同模块的功能差异,下期谈谈几个实际应用的案例。

-------- {一、高级模块} --------- (一)、文件读写

这个模块的功能在于将运行过程中产生的数据存储到EV3主机本地,可以跨越程序完成数据的读取和修改(就是本次程序运行中产生的文件,后面的程序运行过程中可以调用),它有四个模式,功能如下:

读取:读取数字或者文本,可以文本的形式读取数字,但是以数字的形式读取文本会显示0。一次可读取文件的一行,从开头开始读取,每读取一次往后移动一行,如果到达文件的最后一行,输出将为 0或者空白(数字形式读取到末尾输出0、文本形式读取到末尾输出空白)。

写入:往指定的文件末尾写入文本,如果文件不存在会新建一个文件,通过内存浏览器可以看到并导出。

删除:将指定的文件从EV3主机内存中移除。

关闭:下次读取将从文件开头开始读取,但是写入还是从文件末尾写入。

f8b741eaaf7e20a39d90e96957ef6e37.png

下面通过一段程序运行的结果说明这个模块的功能:

944a67650aabdcf60e2da24df15df713.png

程序运行结果

dfcb320155616869ca8538664c5de6f6.png

程序解读:删除文件abc(方便重复运行),清除屏幕,往abc文件中写入循环索引和逗号,重复执行3次,运行完成后文件内的内容为(0,1,2,),按确认键从开头以文本形式读取文件内容,重复7次,文本和数字都会正常显示,读取到文件末尾时会显示空白,所以屏幕显示的第一行逗号后面有空白。

关闭文件,文件末尾写入9,(运行到此处时文件的内容(长度为7)为0,1,2,9),按确认键以数字形式读取内容,并显示在屏幕上,重复运行8次,文本和空白都会显示为0,所以最后的结果是00102090。

需要特别注意的是,每次往文件内写入内容后,加下来的读出会从文件的开头开始读取,相当于写入之后进行了一次关闭,所以上面的程序中去掉关闭模块,运行效果不变,但是如果同时去掉了后面的写入9,后面输出的结果会是8个0,因为文件已经读取到末尾。

(二)、数据日志

这个模块可以按照指定的采样频率测量一个或者多个传感器的参数并存储在文件中,它的关键参数有速率(1-1000)和速率单位(0-每秒采样,1-采样时间间隔)它有四个模式,功能如下:

开启时间:可以选择秒或者分钟

开启:开始数据收集,然后立即继续执行到程序中的下一个模块

单一测量:收集运行到这个模块时刻,对应传感器的单一数据

停止:停止数据收集

7bb943c2bbfeca5452028d971f42d5ad.png a32acab192d02570f83286b7b30d696a.png ba068160839a6cbf9327df35a7db1994.png

这个模块基本不使用,简单测试之后发现他可以保存一段时间内传感器的参数值,并且以图形的形式显示出来,更多的是在实验部分和程序运行过程中完成数据的收集,比赛中可以实时监测机器人的状态(大白老师提示补充e4548a5bebb546a3b92db3bebaa81507.png),更多功能和用法期待熟悉的老师补充772643a0a1ce419202045b1cf44d82c3.png

(三)、消息传递

这个模块主要完成数据在已经蓝牙连接的多个主机之间的传递,他有三个模式:发送、接收和比较。

右上角的内容为消息的标题,发送和接收、比较需要有同样的消息标题才能正常完成数值的传递,在两个主机的蓝牙已经连接的情况下,可以省去接收程序块名称的输入,通过这种方式可以把一个消息发送给多个已经进行蓝牙连接的主机,实现信息的广播。

5f9c00a8225f2564ab4715db2cf9a430.png

比较模式下可以对接收到的文本、数字和逻辑进行比较,并输出比较结果,示例程序如下:

发送端: EV3可以同时连接多个主机进行消息传递 59ea12fe1f3506c717c56a6bed0ac44a.png 接收端: 8960714f43ada584c56c12f50fbbd149.png 运行视频: (四)、蓝牙连接

这个模块有四个模式可选择(开启、关闭、创建、清除),具体功能如下:

881082c52e7c0220d3a8fdb18c33a3ce.png

开启、关闭:可以利用开启、关闭模式,控制主机蓝牙的开关状态。

创建:创建模式可以完成主机和与手动匹配过的主机的自动连接,连接对象的名称,可以通过下拉的方式获取,如果两个主机没有进行过匹配,直接在创建时输入主机名称,运行过程中会报错。

feee382722007b153b3edc3044918816.png

清除:清除模式可以移除匹配过的对象,清除之后再次连接需要重新匹配。

(五)、保持活动

这个模块可以输出主机保持活动至睡眠的持续时间(查看睡眠设置),也可以用来让主机始终保持活动状态,不仅如此休眠模式。

比如设置主机两分钟后进入休眠,那么运行过程中如果程序运行时间超过两分钟,主机就会进入休眠状态,但是使用了保持活动模块之后可以重置睡眠计时器。

5e8876979d39471911a6bf2a9ecfb10f.png

在设置主机的休眠时间为零分钟之后,运行下面这段程序,主机会在程序的运行过程中休眠关机,但是上面那段程序中,每隔110秒主机的睡眠计时器会被重置,程序在运行的过程中主机不会出现休眠。

(六)、原始传感器值

这个模块可以输出指定端口的原始传感器值,多用于没有现成编程模块的第三方传感器,手上没有第三方传感器,所以测试不了2b70f7a97fc3182fa6ca8c0a209ed119.png

4bbfac463d11dfac3ce1623ecc45123a.png (七)、未校准电机

这个模块可以控制中型电机或者大型电机运动,它跟中型电机和大型电机模块的区别在于,使用未校准电机模块控制的电机,会按照指定的功率转动,但是在遇到较大的阻力时,会自动将功率降至0,防止电机转动过渡,从而保护电机。

普通的中型电机和大型电机模块会检测电机的运行速度是否和设定的功率一致,并且会在电机运动功率低于目标功率时,加大电机的运转功率。

ccf4113c85504dfcc5e04dfe93e77199.png (八)、反转电机

这个模块的功能在于不改变电机功率的情况下,改变电机的转动方向,当反转为真时,这个模块后面的电机控制模块运行后,电机的转动方向都会跟正常的方向相反,当运行反转为假时,电机的转动方向才会恢复正常。

这个模块可以用在满足一定条件电机转动方向需要改变的情况,或者电机倒置情况下想保持原有的操作习惯时,比如:运动到边界返回。f03f85f626c0e63bbd217c73e7fe125a.png

这段程序运行的效果是,电机正转1秒,反转,按下左键,反转,按下右键正转,按下左键,反转1秒,反转关闭,保持正转,按下左键,正转,按下右键反转。

(九)、停止程序

这个模块左侧可以连接序列线,右侧为弧形,不能接后续的模块,当程序运行到这个模块时,程序会中止。

e14aa3d310a95996f33953feb2f7d4c5.png (十)、注释

EV3的注释有两种存在形式,模块中的注释方便进行简短的说明(框子的大小不可调整,输入内容过多时不方便阅读),模块外的注释更适合做大篇幅的说明,可以调整框体的大小。

74fa8358e05423d07a22c4f410c35b6e.png 8c715429c4e9ff976ca7e48a43beb423.png -------- {二、自定义模块} ---------

自定义模块的存在可以简化程序,减低编程的工作量,提升打开程序的速度,避免程序太大打不开的问题,并且通过自定义模块处理的程序,更容易被阅读,它可以看做是将一个程序段打包放入了一个模块中。

(一)、创建

举个使用自定义模块的例子,使用中型电机驱动车体运动时,车体在前进和后退的过程中,两个电机的功率不同号,在实际的使用过程中经常会出现功率设定的错误,这个时候我们就可以创建一个可以同时控制两个中型电机转动的自定义模块。

1、编写并选中要封装的程序段(不要选中开始) c09e7c419eb3cb9dce2a598702bb72b6.png 2、工具——我的模块创建器 c458df4a1d0652e5086225f08d5a6a67.png 3、图标选择及参数设定

选择图标,输入名称(只能由字母、数字下划线组成)和程序描述(方便阅读和使用,可以是中文哦)

4ed7263ae2a3770b64c3426a0a24cdd0.png

参数图标界面可以为条件的参数选择图标,建议选择时跟参数的用途或者类型匹配,(论坛有添加自定义图标的教程,感兴趣的可以去论坛挖坟)控制A和D端口电机的转动,图标就选了a和d。

5362e789ae9f1bdc5ebda01f89d0f4f4.png

参数设置界面可以编辑参数的名称、类型、数值范围、默认值和参数的外观。

43452aae99b781d60a823cbf247902cf.png

完成了相关设定之后可以点击右下角的完成按钮,完成自定义模块的创建。

创建时a和d的类型为输入,motor模块的内部就会得到a和d两个输出,需要手动完成这两个数据的分配。如果创建motor时选择了一个参数作为输出,那么这个模块的内部就有一个输出需要提供数据。

87d96f7d0f8025d1e77e793768de4d09.png b2c0ca4df43e921a4745efaa60e5897f.png

完成了参数的设定和连接动作之后,这个自定义模块才算基本完成。

(二)、自定义模块的使用和导出、导入 1、使用: 创建自定义模块时,会在原程序段的位置生成一个自定义模块,想要重复利用的话,可以在最后一个抽屉中拖拽,拖拽出来的参数会为设定的默认值。 5118f08c93436755c9106f64348e5a32.png

光标移动到参数上时,可以看到参数名称。

dd401e3f0af04d11b2da52ba44065bd4.png 2、导出和导入: 会重复使用到的自定义模块可以导出之后单独保存,后续需要使用的时候不用重新编辑直接导入即可。

在项目属性(小扳手)界面可以看到这个项目下的子程序、声音、图像、变量、我的模块和可导出的项目,其中子程序和自定义模块是可以导出的。

选中需要导出的自定义模块就可以导出到指定的文件目录下。

0e156aa97cd2b07c08eacac7da78bb96.png

点击下面的导入按钮,可以导入之前保存的自定义模块和子程序,扩展名都是.ev3s

d212217dafeb339351dda6144110e5a1.png

(三)、自定义模块修改

自定义模块的修改可以双击拖拽出来的自定义模块或者点击模块左上角的齿轮按钮。如果只是改变自定义模块的内容,双击即可,还有更多的需求(改名称、参数、默认值、类型等)就点击编辑按钮。

ed86b11f4aaf9f8d82dbbbdf2645edcc.png 8774e85ac0683fec9de59dde09a0d589.png

调整完之后点击完成会进入程序段编辑界面

f48520f31ccb7e1782830d6c93345113.png 485c8e94a43b30e64abb302593352ac7.png 55d6cafd996d9027d6e6c24d628c22d1.png

修改完之后就得到你想要的自定义模块了,所以如果创建过程中有失误的地方可以使用编辑功能重新调整。

更多精彩内容,欢迎持续关注。

声明:转载自公众号“LCR乐工坊”。

◆◆ 精彩回顾 ◆◆

河南全省学校推广人工智能教育

b8e701962a5e416a452bab9b9e6ba082.png

◆◆ 扫码关注◆◆

关注公众号,更多精彩

069b1c33be1f16c6f6f570518009e331.png◆◆ 知识社群◆◆

加入知识社,更多干货!

e2b953fa1f85a5eae5ba6034911fe4cb.png
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ev3爬楼梯机器人编程_乐高机器人 | EV3编程高级模块——它们都很高级! 的相关文章

随机推荐

  • luogu p2651 添加括号Ⅲ

    题目描述 现在给出一个表达式 xff0c 形如a1 a2 a3 an 如果直接计算 xff0c 就是一个个除过去 xff0c 比如1 2 1 4 61 1 8 然而小A看到一个分数感觉很不舒服 xff0c 希望通过添加一些括号使其变成一个整
  • nigix的使用反向代理-负载均衡(2)

    原文参考 xff1a https blog csdn net zy1471162851 article details 91795712 tip nginx是一款高性能的http 服务器 反向代理服务器及电子邮件 xff08 IMAP PO
  • ubuntu系统下载

    cakao https blog csdn net kwame211 article details 83902851 官方下载地址 xff08 不推荐 xff09 https www ubuntu com download 中科大源 ht
  • Vivado中备份设计好的block design

    参考链接 https blog csdn net dimples song article details 81391615 前言 为了不每次都重新生成block design 避免重复劳动 可以使用直接复制原始工程的design bd块或
  • 完整记录一则Oracle 11.2.0.4单实例打PSU补丁的过程

    本文记录了打PSU的全过程 xff0c 意在体会数据库打PSU补丁的整个过程 1 OPatch替换为最新版本 2 数据库软件应用19121551补丁程序 3 数据库应用补丁 4 验证PSU补丁是否应用成功 1 OPatch替换为最新版本 o
  • 符号函数Sgn

    符号函数 目录 性质 功能 符号函数 定义 即数学上的Sgn 函数返回一个 整型变量 xff0c 指出参数的正负号 语法Sgn number xff0c number 参数是任何有效的数值表达式 返回值如果 number 大于0 xff0c
  • 把linux文件夹压缩成tar.gz的命令

    tar zcvf demo tar gz demo 把demo文件夹压缩成demo tar gz 转载于 https www cnblogs com jiqing9006 p 10893989 html
  • 逻辑回归(Logistic+Regression)经典实例

    机器学习算法完整版见fenghaootong github 房价预测 数据集描述 数据共有81个特征 SalePrice the property s sale price in dollars This is the target var
  • [转]redis服务器与客户端保活参数(tcp-keepalive)设置

    最近使用redis的list做跨进程的消息队列 xff0c 客户端使用的是redis cplusplus client 这个client库还是蛮好用的 xff0c 提供了和redis命令行一致的接口 xff0c 很方便 使用过程中发现下面一
  • debian 安装curl 很简单的一步完成

    在linux中打开网页肯定要用到curl命令 xff0c 但是看网上好多linux安装curl包的博客 xff0c 很麻烦 xff0c 而且运行到最后还出错了 xff0c 最后找到一个apt get 命令 xff0c 一句话搞定了 xff0
  • excel概率密度函数公式_正态分布基本概念及Excel实现

    正态分布 也称为高斯分布 是统计中最常用的连续分布 正态分布在统计中至关重要 xff0c 主要有以下三个原因 xff1a 商业中常见的许多连续变量的分布与正态分布非常相似 正态分布可用于近似各种离散的概率分布 由于正态分布与中心极限定理之间
  • python日期比较_python 时间比较方法总结

    1 xff0c 最近发现 xff0c python的datetime可以直接运用比较运算符进行大小比较 首先定义一组9月份日期数组 from datetime import datetime targets 61 9 1到9 30的日期数据
  • container java_Java容器(container)

    Java容器 container 容器可以管理对象的生命周期 对象与对象之间的依赖关系 xff0c 您可以使用一个配置文件 通常是XML xff0c 在上面定义好对象的名称 如何产生 Prototype 方式或Singleton 方式 哪个
  • matlab安装c盘吗,Matlab安装时的三种错误及其解决办法

    Matlab7 0安装时出现的错误主要分为三种 xff1a 安装前 安装中和安装后 1 安装前 当我们下载好Matlab7 0 http pan baidu com s 1o6BpcsM 安装包并解压后 xff0c 解压缩后里面有一个后缀名
  • 威联通如何备份文件服务器上,威联通NAS HBS 3套件,数据自动备份、同步教程...

    一 什么是 HBS 3 HBS 3 是 Hybrid Backup sync 3 的缩写 xff0c 意为混合型备份与同步中心 xff0c 主要是将数据备份 复原 同步等功能整合到单一 QTS 应用中 xff0c 让您可轻松将 QNAP N
  • 文件远程共享服务器上,远程文件共享服务器

    远程文件共享服务器 内容精选 换一换 文件系统创建完成后 xff0c 用户需在客户端挂载文件共享 xff0c 在本地共享目录和CSG的文件共享建立映射 xff0c 通过操作本地的目录实现对CSG共享目录的操作 xff0c 实现数据实时上云管
  • Jpeg交叉编译

    嵌入式开发 Jpeglib交叉编译 环境 下载源码 交叉编译 相关文件 问题 Jpeglib交叉编译 环境 环境与上一篇相同 上一篇只是简单实现了一个demo 后面需要将完整功能编译成库文件 因为用到libjpeg库 所以先要将jpeg库进
  • 华为服务器显示红色的心跳,客户端服务器心跳

    客户端服务器心跳 内容精选 换一换 由于主机中 etc ssh sshd config 配置文件中对服务器与客户端交互的活动心跳时间做出了限制 xff0c 所以在一个ansible任务中如果在 规定时间 中主机没有任何响应则ssh服务断开
  • iOS开发UI篇—xib的简单使用

    iOS开发UI篇 xib的简单使用 一 简单介绍 xib和storyboard的比较 xff0c 一个轻量级一个重量级 共同点 xff1a 都用来描述软件界面 都用Interface Builder工具来编辑 不同点 Xib是轻量级的 xf
  • ev3爬楼梯机器人编程_乐高机器人 | EV3编程高级模块——它们都很高级!

    模块功能讲解 xff0c 只剩下高级模块和自定义模块未做说明了 xff0c 今天一起讲完 xff0c 了解了模块的功能之后 xff0c 需要通过实际的运用才能知道不同模块的功能差异 xff0c 下期谈谈几个实际应用的案例 一 高级模块 一