#light #sensor #嵌入式-hal-driver #gesture #proximity

无std apds9960

适用于APDS9960数字接近、环境光、RGB和手势传感器的跨平台Rust驱动程序

1个不稳定版本

使用旧的Rust 2015

0.1.0 2018年12月21日

#926嵌入式开发


adafruit-nrf52840-sense 中使用

MIT/Apache

43KB
547

Rust APDS9960 数字接近、环境光、RGB和手势传感器驱动程序

crates.io Docs Build Status Coverage Status Maintenance Intention

这是一个基于 embedded-hal 特性的APDS9960数字接近、环境光、RGB和手势传感器的跨平台Rust驱动程序。

此驱动程序允许您

  • 启用/禁用传感器。请参阅:enable()
  • 启用/禁用接近/或颜色/环境光周期之间的延迟。请参阅:enable_wait()
  • 启用/禁用接近/或颜色/环境光周期之间的长延迟。请参阅:enable_wait_long()
  • 设置接近/或颜色/环境光周期之间的等待时间。请参阅:set_wait_time()
  • 强制中断。请参阅:force_interrupt()
  • 清除所有非手势中断。请参阅:clear_interrupts()
  • 读取设备ID。请参阅:read_device_id()
  • 接近
    • 启用/禁用接近传感器。请参阅:enable_proximity()
    • 启用/禁用接近中断生成。请参阅:enable_proximity_interrupts()
    • 启用/禁用接近饱和中断生成。请参阅:enable_proximity_saturation_interrupts()
    • 读取接近数据。请参阅:read_proximity()
    • 检查接近数据是否有效。请参阅:is_proximity_data_valid()
    • 设置接近中断的低/高阈值。请参阅:set_proximity_low_threshold()
    • 设置接近偏移量。请参阅:set_proximity_offsets()
    • 清除接近中断。请参阅:clear_proximity_interrupt()
  • 颜色/环境光
    • 启用/禁用颜色/环境光传感器。请参阅:enable_light()
    • 启用/禁用环境光中断生成。请参阅:enable_light_interrupts()
    • 启用/禁用环境光饱和度中断生成。请参阅:enable_light_saturation_interrupts()
    • 检查颜色/环境光数据是否有效。请参阅:is_light_data_valid()
    • 读取颜色/环境光数据。请参阅:read_light()
    • 设置颜色/环境光积分时间。请参阅:set_light_integration_time()
    • 设置清除光通道中断的低/高阈值。请参阅:set_light_low_threshold()
    • 清除环境光中断。请参阅:clear_light_interrupt()
  • 手势检测
    • 启用/禁用手势检测。请参阅:enable_gesture()
    • 启用/禁用手势模式。请参阅:enable_gesture_mode()
    • 启用/禁用手势中断。请参阅:enable_gesture_interrupts()
    • 读取是否有有效的手势数据可用。请参阅:is_gesture_data_valid()
    • 读取可用手势数据量。请参阅:read_gesture_data_level()
    • 设置可用手势数据量的阈值。请参阅:set_gesture_data_level_threshold()
    • 读取手势数据是否溢出。请参阅:has_gesture_data_overflown()
    • 读取手势数据。请参阅:read_gesture_data()
    • 设置手势接近进入/退出阈值。请参阅:set_gesture_proximity_entry_threshold()
    • 设置手势偏移量。请参阅:set_gesture_offsets()

设备

APDS-9960设备具有高级手势检测、接近检测、数字环境光感应(ALS)和颜色感应(RGBC)功能。

通信通过I2C双向总线完成。

数据表

使用示例

请在此存储库中找到更多示例: apds9960-examples

extern crate embedded_hal;
extern crate linux_embedded_hal;
#[macro_use]
extern crate nb;
extern crate apds9960;

use apds9960::Apds9960;
use linux_embedded_hal::I2cdev;

fn main() {
    let dev = I2cdev::new("/dev/i2c-1").unwrap();
    let mut sensor = Apds9960::new(dev);
    sensor.enable().unwrap();
    sensor.enable_proximity().unwrap();
    loop {
        let p = block!(sensor.read_proximity()).unwrap();
        println!("Proximity: {}", p);
    }
}

许可证

根据以下任一许可证授权:

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献,应按上述方式双重许可,不附加任何额外条款或条件。

依赖项

~71KB