1个不稳定版本
使用旧的Rust 2015
0.1.0 | 2018年12月21日 |
---|
#926 在 嵌入式开发
在 adafruit-nrf52840-sense 中使用
43KB
547 行
Rust APDS9960 数字接近、环境光、RGB和手势传感器驱动程序
这是一个基于 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 License,版本 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT) 由您选择。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献,应按上述方式双重许可,不附加任何额外条款或条件。
依赖项
~71KB