1 个不稳定版本
使用旧的 Rust 2015
0.2.1 | 2016年11月17日 |
---|
#21 in #talk
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 和更多。
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_led
和 clear_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