#async #embedded #no-std #embedded-hal-driver

no-std person-sensor

用于Useful Things Person传感器的嵌入式HAL驱动程序

4个版本

0.2.2 2024年8月18日
0.2.1 2024年8月18日
0.2.0 2024年8月18日
0.1.0 2024年8月16日

448硬件支持

Download history 92/week @ 2024-08-10 168/week @ 2024-08-17

每月260次下载

MIT/Apache

17KB
242

Useful Things Person Sensor

Useful Things Person Sensor的小型驱动程序。

原始开发者指南

此驱动程序已与传感器的v1.1版进行了测试,但应也能与v1和v2版本一起使用。如果您能验证其他板修订版,请提交一个pr来更新此信息 :)

用法

该传感器提供两种模式:连续模式和单次模式。可以在两种模式之间进行转换,编译器将阻止您误用仅在特定模式下可用或当提供中断引脚时的功能。

use person_sensor::PersonSensor;

let i2c = /* ... */;
let interrupt_pin = /* ... */;

// The driver can be initialized with or without the interrupt pin using the builder
let mut person_sensor = PersonSensorBuilder::new_standby(i2c)
    .with_interrupt(interrupt_pin) // optional
    .build()
    .await
    .unwrap();

let detections = person_sensor.capture_once().await.unwrap();

// ERROR: an interrupt pin was provided, but person_sensor is in standby mode
// person_sensor.wait_for_person().await.unwrap();

// To use the functionality in continuous mode, convert the sensor like below,
// or use the builder with new_continuous(...)
let mut person_sensor = sensor.into_continuous_mode();

person_sensor.get_detections().await.unwrap();

// Now we meet all the requirements to wait for the next detection using the interrupt
_ = person_sensor.wait_for_person().await.unwrap();
// Read the latest detections.
// Note wait_for_person() does not automatically read the detections
let detections = person_sensor.get_detections().await.unwrap();

示例

要在pi pico上运行示例,应进入引导程序模式并运行

cd examples
cargo run --bin <example_name> --release

许可

许可以下之一

Apache License, Version 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0) MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT),任选其一。

贡献

除非您明确表示,否则根据Apache-2.0许可证定义,您提交给作品的所有贡献都应作为上述双许可发布,而无需任何附加条款或条件。

依赖项

~78KB