进阶马达控制、传感器控制以及第三方硬件产品
|
感谢网友圈圈妈 的翻译
进阶马达控制、传感器控制以及第三方硬件产品
马达类基础马达所有leJOS NXJ的马达类都扩展了基础马达类的抽象概念。 基础马达定义了任一种leJOS NXJ马达都必须对其中一些马达支持和提供所有工具的方法。这些方法是:
RCX马达RCX马达没有内置转速计,所以它不支持NXT马达的进阶功能,如旋转,有条理的旋转和速度调节。 一个更简单些的类用来支持RCX马达。 它在leJOS的RCX版本中有着与马达类相似的方法,这与那些支持基础马达类的相同。 使用RCX马达,你可以使用如下构造来创建RCX马达类的例子:
例如
你可以通过用转换连接线连接的方式使用leJOS NXJ的RCX马达。这个线可以在LEGO上买到(它也是LEGO MINDSTORMS的配套元件)。 你也可以通过连接远程RCX来使用RCX马达类控制RCX马达。 马达这个类可以控制内含转速计的NXT马达,而且可以描述控制马达 马达端口类在使用NXT马达时,不必明确使用马达端口类:你可以使用多种多样的马达A, 马达B和马达C。 所以,如果你仅用NXT马达,那你就可以跳过这部分。 但是,理解所使用的马达端口如何工作也是很有帮助的:
在马达端口定义的接口中,有个层级结构
所有的马达端口都支持基础马达端口的接口,这可以控制马达的功率和模式 (前进,后退,停止,游荡) 支持这个的端口包含:
基础马达端口的所有工具包含:
NXT马达内部的转速器支持转速器接口。 NXT马达端口支持包含基础马达端口和转速器接口的转速马达端口接口。 转速马达端口的执行方式包括:
所有这些看起来复杂,但是使用很简单:
传感器端口如果你将一个传感器直接连到一个NXT传感器端口,你可以使用传感器端口类,并跳过这一章节。 但是如果你使用了一个端口分流器,或者一个远程NXT或RXC,那么这章节也许有些帮助。 NXT传感器端口支持三种不同类型的传感器:
根据不同类型的传感器,这有一些相对应的接口
在接口层级的最上层是基础传感器端口。所有的传感器端口类都执行这个接口。这个接口允许设置一个传感器的类型和模式。这些类型和模式始终由通过基础传感器端口的接口继承来的接口传感器定义。 The types of sensors are:
模式是:
基础传感器端口的接口定义方法如下:
大多数使用LeJOS NXJ的时候,这些类型和模式都不需要明确设置。因为它已经由传感器类的构造器完成了。例如: 触觉传感器,光传感器和超声传感器。 NXT传感器端口 – 传感器端口 – 支持所有这些接口。之所以分开这些不同的接口,是因为有一些其他的传感器端口只能支持部分接口,并且不同类型的传感器只能执行一些特定的接口。
分流器端口如Mind传感器Split-Nx 只能支持I2C传感器,这样,事实上,只支持I2C端口的接口。 也有一些只支持其他接口的情况。例如通用的远程传感器端口 – 远程传感器端口,目前只支持AD传感器端口的接口。 RCX传感器多路器的类,如即将推出的Mind传感器版本,将只支持传统传感器端口的接口。 传感器LeJOS NXJ支持的每种传感器都有一个特定的类能够进入这个传感器。每种传感器类都有一个参数,一个支持要求的接口的传感器端口。执行接口的任一种传感器端口类都有明确的参数。传感器端口类支持所有的接口,如果被进入的传感器直接连在NXT,那么参数应该是传感器端口S1,传感器端口S2,传感器端口S3,传感器端口S4中的一个。 如果使用了端口分流器,那么参数应该是传感器端口S1,传感器端口S2,传感器端口S3,传感器端口S4中的一个。这明确了使用分流器的用哪个端口。如果多倍传感器连在分流器上,则它们每个都必须有不同的I2C地址。大多数I2C传感器可以有变化的地址-参见制造说明。要明确一个传感器所使用的地址,如果不是默认的,那就应该使用I2C传感器设置地址的方法。 leJOS NXJ支持的传感器端口和支持它们的类,以及这类型所需要的传感器端口类型都在下表中给出: RCX 传感器RCX传感器与触觉传感器不同,是需要提供电压的主动传感器,当测量时,会有3毫秒的短路期。 RCX 亮度传感器RCX光传感器类支持RCX光传感器 它的构造器是:
例如
RCX光传感器能自动被激活,所以电流通过它LED亮了。它可以明确的被钝化或激活。 方法如下:
RCX触觉传感器RCX触觉传感器是与NXT版本类似的被动传感器, 标准的触觉传感器类能够支持它。 RCX 转动传感器LeJOS NXJ目前不支持RCX转动传感器 RCX温度传感器它的构造器如下:
第三方传感器及其他硬件产品leJOS NXJ支持很多第三方传感器。其中两大第三方传感器厂商是Mindsensors 和 HiTechnic。 大多数第三方传感器和I2C传感器和扩展I2C传感器类,但是也有A/D传感器,如HiTechnic Gyro 传感器和红外搜索器。 也有一些其他第三方提供的I2C产品,它们不是传感器,而是多路器和适配器。 Mindsensors的RCX马达多路器就是一个多路器的例子。它能够在NXT传感器端口上最多连接4个RCX马达,每个都能够独立控制。 Mindstorms NRLink-Nx infra-red通讯适配器是适配器的一个例子。它能够在NXT和RCXs间进行双向通讯。它也能够控制电源功能马达。 I2C传感器I2C传感器类可以使用基础方法进入I2C传感器,包括getData和SendData。 它也包括所有的I2C传感器执行的方法,包括getVersion, getProductID 和 getSensorType。 方法如下:
LeJOS NXJ使用7位 I2C地址,而I2C设备说明书通常都是给它们8位地址,其中最低位被设置为零。大多数I2C传感器使用一个默认的地址0x01,而这个说明给出0x02. 大多数I2C设备允许地址改变。 地址设置的方法可以用来设置地址,与I2C设备交谈。它的默认值是0x01。 独立的I2C设备有可以读写的寄存器,并且寄存器可以用来执行命令。每个I2C设备都有一个类可以扩展I2C传感器,有方法可以进入寄存器并执行对该传感器的命令。 I2C传感器类可以用来使一个I2C设备探测生效,汇报哪个设备连接到了哪个传感器和哪个地址-参见I2C设备范例。所有的NXT I2C传感器和其他设备都支持getVersion, getProductID and getSensorType 方法。 参见上表中完整的传感器和其他第三方设备的列表。 |