1 个不稳定版本

0.1.0 2024年7月18日

#4#light-sensor

Download history 77/week @ 2024-07-12 30/week @ 2024-07-19 2/week @ 2024-07-26

109 每月下载量

MIT/Apache

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