10个版本 (6个重大更新)
0.7.1 | 2023年10月18日 |
---|---|
0.7.0 | 2022年8月14日 |
0.6.0 | 2021年5月12日 |
0.5.0 | 2018年11月16日 |
0.1.1 | 2016年9月6日 |
#206 in 硬件支持
在easyblink中使用
29KB
297 行
Blinkt
Blinkt是一个Rust库,提供了Raspberry Pi上Pimoroni Blinkt!及其类似APA102或SK9822 LED灯条或板卡的接口。该库支持GPIO引脚上的位带模式,以及GPIO 10(物理引脚19)上的硬件SPI模式(数据),和GPIO 11(物理引脚23)上的时钟。
对于位带模式,Blinkt通过/dev/gpiomem
或/dev/mem
访问BCM283x GPIO外围设备。硬件SPI模式通过/dev/spidev0.0
控制。
代码和文档中,原始APA102和SK9822克隆都得到支持。RGB LED/驱动IC在代码和文档中被称为像素。
直到库达到v1.0.0版本,不保证对较小版本的向后兼容性。
Blinkt正在GitHub仓库的master分支上进行开发。如果您正在寻找最新发布版本或任何早期发布版本的README.md
或examples
目录,请访问crates.io,从GitHub releases页面下载存档版本,或克隆并检出相关版本标签。
文档
最新发布版本、旧版本和当前开发版本都提供了在线文档。
用法
使用blinkt
作为依赖项添加到您的Cargo.toml
,使用cargo add blinkt
,或通过在依赖项部分添加以下行。
[dependencies]
blinkt = "0.7.1"
调用 Blinkt::new()
创建一个具有默认设置的新的Blinkt。可以通过 Blinkt::with_settings()
和 Blinkt::with_spi()
获取其他配置选项。
use blinkt::Blinkt;
let mut blinkt = Blinkt::new()?;
示例
以下示例展示了如何在Blinkt!板上交换所有像素的红、绿和蓝色。
use std::error::Error;
use std::time::Duration;
use std::{mem, thread};
use blinkt::Blinkt;
fn main() -> Result<(), Box<dyn Error>> {
let mut blinkt = Blinkt::new()?;
let (red, green, blue) = (&mut 255, &mut 0, &mut 0);
loop {
blinkt.set_all_pixels(*red, *green, *blue);
blinkt.show()?;
thread::sleep(Duration::from_millis(250));
mem::swap(red, green);
mem::swap(red, blue);
}
}
要控制由144个像素组成的LED灯带,连接到Raspberry Pi的硬件SPI引脚(数据在GPIO 10(物理引脚19),时钟在GPIO 11(物理引脚23)),在16 MHz的时钟速度下,将上述示例中的 Blinkt::new()
行替换为以下内容。您可能需要根据像素数量和线缆质量调整最大时钟速度。
let mut blinkt = Blinkt::with_spi(16_000_000, 144)?;
更多示例可以在 examples
目录中找到。
交叉编译
如果您不是直接在Raspberry Pi上工作,您需要为适当的ARM架构交叉编译您的代码。有关更多信息,请参阅此指南,或尝试cross项目进行“零设置”交叉编译。
Cargo
虽然在某些平台上交叉编译二进制文件可能需要额外的步骤,但使用 cargo check
检查代码只需要安装适当的目标。大多数Raspberry Pi型号需要 armv7-unknown-linux-gnueabihf
目标。对于某些型号,例如Raspberry Pi Zero,需要不同的目标三元组。
使用 rustup
安装相关目标。
rustup target install armv7-unknown-linux-gnueabihf
在项目根目录下创建一个 .cargo
子目录,然后保存以下片段到 .cargo/config.toml
。
[build]
target = "armv7-unknown-linux-gnueabihf"
Visual Studio Code
Visual Studio Code中的rust-analyzer扩展需要通过设置 rust-analyzer.cargo.target
配置选项来知道目标平台。在项目根目录下创建一个 .vscode
子目录,然后保存以下片段到 .vscode/settings.json
。
{
"rust-analyzer.cargo.target": "armv7-unknown-linux-gnueabihf"
}
版权和许可
版权(c)2016-2022 Rene van der。在 MIT许可 下发布。
依赖关系
~375KB