如果您拥有一块 Raspberry Pi,您很可能已经尝试过物理计算——编写代码与真实的物理世界互动,例如闪烁一些 LED 或 控制伺服电机。您可能也使用过 GPIO Zero,这是一个 Python 库,为 Raspberry Pi 上的 GPIO 设备提供了一个简单的接口,并具有友好的 Python API。GPIO Zero 由 Opensource.com 社区版主 Ben Nuttall 开发。
我正在开发 rust_gpiozero,这是优秀的 GPIO Zero 库的端口,它使用了 Rust 编程语言。它仍然是一个正在进行中的项目,但它已经包含了一些有用的组件。
Rust 是一种在 Mozilla 开发的系统编程语言。它专注于性能、可靠性和生产力。Rust 网站有 丰富的资源,如果您想了解更多信息。
入门指南
在开始使用 rust_gpiozero 之前,最好对 Rust 编程语言有一个基本的了解。我建议至少完成 《Rust 编程语言》这本书的前三章。
我建议使用 rustup 在您的 Raspberry Pi 上 安装 Rust。或者,您可以使用 cross(仅在 x86_64 Linux 主机上有效)或 这篇教程 设置交叉编译环境。
安装 Rust 后,通过输入以下命令创建一个新的 Rust 项目
cargo new rust_gpiozero_demo
通过将以下内容添加到 Cargo.toml 文件中的 dependencies 部分,添加 rust_gpiozero 作为依赖项(当前版本为 v0.2.0)
rust_gpiozero = "0.2.0"
接下来,通过修改 main.rs 文件并添加以下代码,来闪烁一个 LED 灯——物理计算的“Hello World”
use rust_gpiozero::*;
use std::thread;
use std::time::Duration;
fn main() {
// Create a new LED attached to Pin 17
let led = LED::new(17);
// Blink the LED 5 times
for _ in 0.. 5{
led.on();
thread::sleep(Duration::from_secs(1));
led.off();
thread::sleep(Duration::from_secs(1));
}
}
rust_gpiozero 为闪烁 LED 灯提供了一个更简单的接口。您可以使用 blink 方法,提供它应该亮起和熄灭的秒数。这简化了代码,如下所示
use rust_gpiozero::*;
fn main() {
// Create a new LED attached to Pin 17
let mut led = LED::new(17);
// on_time = 2 secs, off_time=3 secs
led.blink(2.0,3.0);
// prevent program from exiting immediately
led.wait();
}
其他组件
rust_gpiozero 提供了几个与 GPIO Zero 类似的组件,用于控制输出和输入设备。这些包括 LED、Buzzer、Motor、脉冲宽度调制 LED (PWMLED)、Servo 和 Button。
最终将添加对其他组件、传感器和设备的支持。您可以参考 文档 以获取更多使用信息。
更多资源
rust_gpiozero 仍然是一个正在进行中的项目。如果您需要更多关于在 Raspberry Pi 上开始使用 Rust 的资源,这里有一些有用的链接
Raspberry Pi 外围访问库 (RPPAL)
类似于基于 RPi.GPIO 库的 GPIO Zero,rust_gpiozero 构建于 Rene van der Meer 编写的优秀的 RPPAL 库之上。如果您想使用 Rust 对您的项目进行更多控制,您绝对应该尝试 RPPAL。它支持 GPIO、集成电路 (I2C)、硬件和软件脉冲宽度调制 (PWM) 以及串行外围接口 (SPI)。通用异步收发器 (UART) 支持目前正在开发中。
Sense HAT 支持
Sensehat-rs 是由 Jonathan Pallant (@therealjpster) 开发的库,为 Raspberry Pi Sense HAT 附加板提供 Rust 支持。Jonathan 还有一个使用该库的 入门工作坊,并且他在 The MagPi 杂志第 73 期 中撰写了一篇关于在 Raspberry Pi 上使用 Rust 的初学者入门文章“Read Sense HAT with Rust”。
总结
希望这篇文章能够启发您在 Raspberry Pi 上使用 Rust 编程语言进行物理计算。rust_gpiozero 是一个库,它提供了有用的组件,例如 LED、Buzzer、Motor、PWMLED、Servo 和 Button。更多功能正在计划中,您可以关注我的 Twitter 或查看 我的博客 以保持关注。
6 条评论