#adafruit #button #led #talk

bin+lib trellis

Rust 库,用于与 Adafruit Trellis 通信

3 个不稳定版本

使用旧的 Rust 2015

0.2.1 2016年11月17日
0.2.0 2016年9月15日
0.1.0 2016年7月23日

#18 in #talk

21 次每月下载

GPL-3.0 许可证

615KB
267

包含 (WOFF 字体, 120KB) docs/Heuristica-Italic.woff, (WOFF 字体, 90KB) docs/FiraSans-Medium.woff, (WOFF 字体, 92KB) docs/FiraSans-Regular.woff, (WOFF 字体, 56KB) docs/SourceCodePro-Regular.woff, (WOFF 字体, 56KB) docs/SourceCodePro-Semibold.woff, (WOFF 字体, 49KB) docs/SourceSerifPro-Bold.woff 等 1 个更多。.

Build Status Coverage Status License

Adafruit Trellis for Rust 库

这是 Adafruit Trellis Python 和 Adafruit Trellis C++ 库的纯 Rust 版本。

文档

当前版本的文档可以在以下位置找到: Rust Trellis 文档

用法

要了解使用库的示例,让我们看看项目中的示例程序。示例程序在 Trellis 上对应的按钮被按下时打开或关闭 LED。

fn main() {
    let pi_dev = RaspberryPiBPlus::new();

    let mut trellis = Trellis::new(Box::new(pi_dev));

    trellis.init();
    trellis.set_led(Col::A, Row::R0);
    trellis.write_display();

    let cb = Box::new(|trellis:&mut Trellis, evt:ButtonEvent| {
        if evt.buttons_pressed.len() > 0 {
            println!("pressed button {:?}", evt);
        }
        for button in evt.buttons_pressed {
            if trellis.is_led_set(button.col, button.row) {
                trellis.clear_led(button.col, button.row);
            } else {
                trellis.set_led(button.col, button.row);
            }
        }
        trellis.write_display();
        return false;
    });
    trellis.button_evt_loop(cb);
}

您首先需要创建一个 Trellis 连接到的具体主机设备。由于我只拥有 Raspberry Pi 2 B+,这是唯一一个包含库的设备。使用 RaspberryPiBPlus 作为基础实现您自己的设备应该很简单。

现在,您可以使用 new 和之前创建的主机设备对象创建一个新的 Trellis。在与 Trellis 交互之前,您必须调用 init(恰好一次)。

init 之后,您现在可以通过调用 set_ledclear_led 来操纵 LED 状态。可以使用 is_led_set 查询当前 LED 状态。LED 以行(从 R0 到 R3)和列(从 A 到 D)进行寻址。寻址布局如下

[(A,R0),....,(D,R0)]
[..................]----- (cables)
[..................]-----
[(A,R3).....,(D,R3)]

在操纵 LED 状态后,您必须通过调用 write_display 将状态写入设备。这将根据先前设置的 LED 状态打开/关闭 Trellis 上的 LED。

对于读取按钮状态,您可以在 button_evt_loop 函数上注册回调函数。请注意,此函数仅在提供的回调函数返回 true 时终止。按钮状态以 30ms(目前是固定的)的分辨率在 button_evt_loop 中不断查询。

回调函数将接收一个在 EventButton 对象中包含的按下的按钮列表。无论用户按下按钮的时间有多长,函数只会接收到一次按钮按下事件。

依赖项

~2–3.5MB
~59K SLoC