#raspberry-pi #gpio #嵌入式 #raspberry #l298n

raslib

使用 Rust 管理 Raspberry PI 设备。提供 GPIO 端口以及 L298N 电机电路的直接支持

2 个版本

0.1.2 2023 年 8 月 10 日
0.1.1 2023 年 1 月 14 日

#985 in 硬件支持

MIT 许可证

55KB
90

raslib logo

raslib

raslib's crate badge license badge documentation badge

raslib 是一个用于管理 Raspberry PI 设备的库,用 Rust 编写。

它提供 GPIO¹ 端口访问,以便管理 LED 或电机(直接支持 L298N 电机电路)。

安装概述示例

安装

在你的 "Cargo.toml" 文件中

[dependencies]
raslib = "*"

crates.io 检查当前版本。

概述

  • GPIO

    该库提供了一个简单的结构来操作 GPIO 端口,称为 Gpio

    #[derive(Copy, Clone)]
    struct Gpio {
        pin: u32,
    }
    

    实现

    fn new(pin: u32) -> Result<Self, std::io::Error>;
    
    fn write(&self, value: bool) -> Result<(), std::io::Error>;
    
    fn read(&self) -> Result<bool, std::io::Error>;
    
    fn pin(&self) -> u32;
    

    用法

    use raslib::Gpio;
    
    let gpio = Gpio::new(16)?;
    gpio.write(raslib::HIGH)?;
    
    let pin: u32 = gpio.pin();
    

    根据版本的不同,Raspberry PI 有不同的 GPIO 引脚。请确保连接到正确的数字。

    此示例已在 Raspberry PI 4 Model B 上进行测试,端口 16 不是一个电源(PWR)也不是一个地(GND)引脚!

    请参阅其 示例

  • L298N

    该库提供了一个简单的方式来操作电机,使用 L298N 电路。因为电机线连接到 GPIO 引脚,所以 L298n 实际上使用了 Gpio

    struct L298n {
      in1: Gpio,
      in2: Gpio,
      ena: Gpio,
    }
    

    实现

    fn new(in1: u32, in2: u32, ena: u32) -> Self;
    
    fn forward(&mut self) -> Result<(), io::Error>;
    
    fn backward(&mut self) -> Result<(), io::Error>;
    
    fn stop(&mut self) -> Result<(), io::Error>;
    

    用法

    use raslib::L298n;
    
    let mut motor_left = L298n::new(18, 15, 14);
    let mut motor_right = L298n::new(9, 7, 25);
    
    motor_left.forward()?;
    motor_right.forward()?;
    

    请参阅其 示例

  • 实用工具

    该库提供了一个简单的 sleep 函数,使当前线程等待指定毫秒数。

    fn sleep(milliseconds: u64);
    

    用法

    raslib::sleep(1000); // waits 1 second.
    

    为了使编写值更美观,它还提供了两个常量

    const HIGH: bool = true;
    const LOW: bool = false;
    

    用法

    gpio.write(raslib::HIGH);
    gpio.write(true); // same as above
    

无运行时依赖