#adafruit #button #led #talk #trellis

bin+lib trellis_test

Rust 库,用于与 Adafruit Trellis 通信

1 个不稳定版本

使用旧的 Rust 2015

0.2.1 2016年11月17日

#21 in #talk

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 和更多。

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