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。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
正在从节点解密字符串。Java中的js?   java未来超时和IO超时   java apache camel多播以异步方式执行聚合   java需要710次尝试在Android和Raspberry Pi之间建立socket连接   在Java中使用“+,”循环绘制形状   java安卓:如何计算两点之间的距离   java多线程Hello World   刷新后缓存共享变量的java Freemarker模板   java我试图通过迭代用整数填充数组,但我得到了ArrayIndexOutOfBoundsException   JNI C++到java 32位图像的不正确显示   java哪个更快:克隆还是使用流?   java cache2k和Generic T不能很好地结合在一起   java如何在读取文件之前更新文件内容?   java如何在GWT中从JSNI方法调用JSNI方法   将MySQL类型文本映射到Java Hibernate的类型   java如何按长度对字符串排序   java RecyclerView:在滚动期间不断更改数据