raspberry pi
如果您拥有Raspberry Pi,则很可能已经尝试过物理计算-编写代码以与真实的物理世界进行交互,例如使某些LED闪烁或控制伺服电机 。 您可能还使用了GPIO Zero ( GPIO零) ,这是一个Python库,它通过友好的Python API为Raspberry Pi的GPIO设备提供了简单的接口。 GPIO Zero由Opensource.com社区主持人Ben Nuttall开发 。
我正在研究rust_gpiozero ,这是使用Rust编程语言的超棒GPIO零库的端口。 这项工作仍在进行中,但已经包含了一些有用的组件。
Rust是Mozilla开发的一种系统编程语言。 它专注于性能,可靠性和生产率。 如果您想了解更多信息,Rust网站将提供大量资源 。
入门
在开始使用rust_gpiozero之前,对Rust编程语言有基本的了解是很明智的。 我建议至少阅读《 Rust编程语言》一书的前三章。
我建议使用rustup在Raspberry Pi上安装Rust 。 另外,您可以使用cross (仅在x86_64 Linux主机上有效)或this how-to设置交叉编译环境。
安装Rust后,通过输入以下内容创建一个新的Rust项目:
cargo new rust_gpiozero_demo
加入rust_gpiozero为(目前在v0.2.0)的依赖通过添加以下的依赖关系一节中您Cargo.toml文件
rust_gpiozero = "0.2.0"
接下来,通过使用以下命令修改main.rs文件,使LED闪烁(物理计算的“世界”):
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闪烁提供了更简单的界面。 您可以使用眨眼方法,提供应保持打开和关闭的秒数。 这将代码简化为以下内容:
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 , 蜂鸣器 , 电动机 ,脉宽调制LED( PWMLED ), 伺服和按钮 。
最终将增加对其他组件,传感器和设备的支持。 您可以参考文档以获取更多使用信息。
更多资源
Raspberry Pi外围设备访问库(RPPAL)
类似于基于RPi.GPIO库的GPIO零,rust_gpiozero建立在Rene van der Meer 出色的RPPAL库的基础上。 如果要使用Rust对项目进行更多控制,则绝对应该尝试RPPAL。 它支持GPIO,内部集成电路(I 2 C),硬件和软件脉冲宽度调制(PWM)和串行外围设备接口(SPI)。 通用异步收发器(UART)支持目前正在开发中。
Sense HAT支持
Sensehat-rs是Jonathan Pallant ( @therealjpster )的库,为Raspberry Pi Sense HAT附加板提供Rust支持。 乔纳森(Jonathan)还有一个使用该库的入门讲习班 ,他在MagPi杂志的第73 期中写了一个初学者的介绍,以在Raspberry Pi上使用Rust,即“ Read Sense HAT with Rust”。
结语
希望这激发了您在您的Raspberry Pi上使用Rust编程语言进行物理计算。 rust_gpiozero是一个库,提供有用的组件,例如LED,蜂鸣器,电动机,PWMLED,伺服和按钮。 我们计划了更多功能,您可以在Twitter上关注我,或者查看我的博客以保持关注。
翻译自: https://opensource.com/article/19/3/physical-computing-rust-raspberry-pi
raspberry pi