#raspberry-pi #led-strip #apa102 #gpio-pin #raspberry #pi #sk9822

blinkt

Raspberry Pi上Pimoroni Blinkt!及其类似APA102或SK9822 LED灯条或板卡的接口

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中使用

MIT 许可证

29KB
297

Blinkt

Build Status crates.io MIT licensed Minimum rustc version

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.mdexamples目录,请访问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