1 个不稳定版本
0.1.0 | 2024年7月18日 |
---|
#4 在 #light-sensor
109 每月下载量
14KB
131 行
BH1750 驱动程序
一个与平台无关、兼容 'no_std' 的 Rust 驱动程序,用于 BH1750 环境光传感器,使用 embedded-hal
特性。
I²C 指令集基于以下数据手册: BH1750 数据手册
所有指令都已实现并受支持。
从传感器读取的原始值被转换为 lux,考虑了解析度和测量时间寄存器的值。
使用方法
要使用此驱动程序,请导入它和一个 embedded_hal
实现,然后创建驱动程序的实例。
您可以通过调用 get_one_time_measurement
函数从传感器获取单个测量值。
或者,您可以调用 start_continuous_measurement
以开始连续测量,然后调用 get_current_measurement
以获取最新的测量值。
示例
此示例使用 esp-hal
包来与 ESP32 微控制器上的传感器接口。
#![no_std]
#![no_main]
use esp_backtrace as _;
use bh1750::{BH1750, Resolution};
use esp_hal::{
clock::ClockControl,
delay::Delay,
peripherals::Peripherals,
prelude::*,
system::SystemControl,
gpio::Io
};
use esp_hal::i2c::I2C;
#[entry]
fn main() -> ! {
esp_println::logger::init_logger_from_env();
let peripherals = Peripherals::take();
let system = SystemControl::new(peripherals.SYSTEM);
let clocks = ClockControl::boot_defaults(system.clock_control).freeze();
let delay = Delay::new(&clocks);
let io = Io::new(peripherals.GPIO, peripherals.IO_MUX);
let i2c = I2C::new(
peripherals.I2C0,
io.pins.gpio8,
io.pins.gpio9,
100.kHz(),
&clocks,
None
);
let mut bh1750 = BH1750::new(i2c, delay, false);
loop {
let lux = bh1750.get_one_time_measurement(Resolution::High)
.expect("Failed to read BH1750");
log::info!("Lux = {:.2}", lux);
delay.delay(1000.millis());
}
}
依赖关系
~56KB