Skip to content

Files

Latest commit

 

History

History
executable file
·
77 lines (55 loc) · 4.16 KB

readme_ru.md

File metadata and controls

executable file
·
77 lines (55 loc) · 4.16 KB

gpio-expander

Version Docs

Это крейт, предоставляющий общую абстракцию для I²C расширителя портов, используемый в продуктах Расширитель GPIO-портов (Troyka-модуль), Troyka HAT и Плата расширения Slot Expander. Эта абстракция не обязательно самая производительная, но она позволяет использовать контакты так же, как прямые GPIO из HAL. Поскольку типы выводов также реализуют характеристики embedded-hal пинов ввода/вывода, они также могут быть переданы последующим драйверам (например, в качестве вывода сброса или выбора микросхемы).

Пример

use std::error::Error;
use std::thread;
use std::time::Duration;

use gpio_expander::{prelude::*, GpioExpander};
use rppal::i2c::I2c;

fn main() -> Result<(), Box<dyn Error>> {
    // Инициализация периферийного устройства I²C из HAL
    let i2c = I2c::with_bus(1)?;

    // Инициализация GpioExpander с адресом I²C по умолчанию
    let mut expander = GpioExpander::new(i2c, None);
    let expander_pins = expander.pins();

    // Настройка пина 0 как выход
    let mut led = expander_pins.p00.into_output()?;

    loop {
        led.set_high()?;
        thread::sleep(Duration::from_secs(1));
        led.set_low()?;
        thread::sleep(Duration::from_secs(1));
    }
}

Больше примеров в папке examples.

Документация

Документацию можно найти на docs.rs.

Использование в мультипотоке

gpio-expander использует BusMutex из shared-bus под капотом. Это означает вы также можете сделать выводы доступными для разных задач/потоков, учитывая, что вы предоставляете соответствующий тип мьютекса:

// Инициализация GpioExpander с адресом I²C по умолчанию, и альтернативным Mutex
let mut expander: GpioExpander<std::sync::Mutex<_>> = GpioExpander::new(i2c, None);

Конфигурация по умолчанию, позволяет использовать пины в однопоточном режиме, для многопоточного режима, используйте пример выше (реализация Mutex зависит от используемой вами платформы).

Лицензия

Лицензируеться под

по вашему выбору.

Вклад

Если вы прямо не укажете иное, любой вклад, преднамеренно отправленный для включения вами в работу, как определено в лицензии Apache-2.0, должно быть с двойной лицензией, как указано выше, без каких-либо дополнительных условий.