python和scratch的brickpi接口
BrickPi的Python项目详细描述
brickpi是一个提供对brickpi-raspberry-pi扩展板的访问的包。 brickpi扩展板是一个微处理器板,它允许树莓pi 与乐高头脑风暴发动机和传感器通信。这个包提供了python和 brickpi的临时接口。
划痕界面
scratch接口是通过一个从genericdevice继承的brickdiscratch类实现的, 其中genericdevice是rpiscratchio包中的插件基类。
rpiscratchio配置文件
scratch接口通过rpiscratchio使用scratchpy。传感器应通过 在配置文件中声明它们:
[DeviceTypes] LEGO = import BrickPi; from BrickPi.BrickPiScratch import BrickPiScratch; BrickPiScratch() [DeviceConnections] LEGO = UART0 [BrickPi] S1 = ULTRASONIC_CONT MA = MB =
在本例中,一个超声波传感器和两个电机连接到brickpi。 通过以相同的方式声明马达,可以将马达添加到mc或md端口。传感器 可以通过将传感器名称分配给传感器端口(s1到s4)来添加。可用的 传感器名称为:
TOUCH ULTRASONIC_CONT ULTRASONIC_SS RCX_LIGHT COLOR_FULL COLOR_RED COLOR_GREEN COLOR_BLUE COLOR_NONE I2C I2C_9V
实例化时,brickpiscatch类启动一个单独的线程来更新值 在Brickpi和覆盆子pi之间,频率为10Hz。然后可以读取值 根据需要或在数据采集回路中从树莓PI。配置 在数据采集回路中自动读出到划痕,读出周期可以是 在配置文件中声明:
LEGO = import BrickPi; from BrickPi.BrickPiScratch import BrickPiScratch; BrickPiScratch(5)
其中这一行应替换上一示例中的构造函数行和数字 5是读出周期。这意味着传感器或电机编码器的值将 每五个读数循环更新一次。因为读出回路在 10Hz,这意味着划痕中的传感器以2Hz的速率更新。为了一个 简单的抓挠程序运行在树莓PI上,2Hz的更新率是最大值 划痕可以毫不延迟地处理。
传感器或电机编码器可以通过使用 通道号(稍后解释)或“S”(适用于所有传感器)或“M”(适用于所有电机 编码器)或“全部”(用于传感器和电机编码器)。周期和传感器也可以 使用config broadcast命令从头添加(稍后解释)。为了防止 自动更新传感器或电机编码器当划痕开始时,设置读数 周期到0:
LEGO = import BrickPi; from BrickPi.BrickPiScratch import BrickPiScratch; BrickPiScratch(0,"S")
在这种情况下,活动传感器通道也都已添加。
从头开始
从命令行或菜单启动scratch。然后启用遥感器 右键单击sensor value文本,可以在 sensing工具面板。应出现一个对话框,说明遥感器 已启用连接。此时,scratch成为一个服务器。不要跑 同一台机器上有多个刮伤窗口,否则只有第一个 可从PythonAPI访问。开始刮擦后,键入:
RpiScratchIO configFile.cfg
其中configfile.cfg应替换为 是在上一步中创建的。如果省略了配置文件的名称, 然后rpiscratchio将尝试改用rpiscratchio.cfg。
当rpiscratchio启动时,它加载brickpiscract python类。此更新 用几个新的传感器刮伤。使用上面给出的示例配置文件, 变量为:
LEGO:0 LEGO:1 LEGO:2 LEGO:3 LEGO:10 LEGO:11 LEGO:12 LEGO:13 LEGO:20 LEGO:21 LEGO:22 LEGO:23
其中这些对应于传感器端口s1-s4(0-3)、电机端口ma-md(10-13)和 马达编码器端口MA-MD(20-23)。电机通道(10-13)包含 写信给汽车公司。通过发送 表单的临时广播消息:
LEGO:read:0
其中0是通道号(本例中为s1)。然后该值将出现在 相应的传感器大约在0.2s以后。
值可以通过发送scratch br写入电机oadcast请求的格式:
LEGO:write:10,200
其中10是通道号(本例中为ma),200是电机速度值。
scratch可用于通过广播自动更新启用的传感器值:
LEGO:config:update,s
其中通道或通配符选项列表(适用于所有传感器,M适用于所有电机 编码器或由空格分隔的通道列表)应跟随更新。速度 可以通过广播从头设置更新:
LEOG:config:period,5
其中5表示2Hz,10表示1Hz等。要禁用自动读数,则 期间应设置为0。