#vl53l1x #driver #i2c #sensors #hardware #port #distance

no-std vl53l1x-uld

Library source port of the ULD driver for the VL53L1X

3 stable releases

2.0.1 Dec 7, 2023
2.0.0 Nov 29, 2022
1.0.0 May 20, 2022

#1592 in Embedded development

26 downloads per month

MIT license

54KB
948 lines

build docs crates.io

vl53l1x-uld

This crate is a port of the STM VL53L1X IMG009 driver to native rust.

Minimal example

Below is minimal example for using this driver. Other more complex examples can be found in the examples folder.

use vl53l1x_uld::{self, VL53L1X, IOVoltage, RangeStatus};

// Create hardware specific I2C instance.
let i2c = ...;
// Create sensor with default address. 
let mut vl = VL53L1X::new(i2c, vl53l1x_uld::DEFAULT_ADDRESS);

const ERR : &str = "Failed to communicate";

// Check if the sensor id is correct.
if (vl.get_sensor_id().expect(ERR) == 0xEACC)
{
    // Initialize the sensor before any usage.
    // Set the voltage of the IO pins to be 2.8 volts
    vl.init(IOVoltage::Volt2_8).expect(ERR);

    // Start a ranging operation, needed to retrieve a distance
    vl.start_ranging().expect(ERR);

    // Wait until distance data is ready to be read.
    while !vl.is_data_ready().expect(ERR) {}

    // Check if distance measurement is valid.
    if (vl.get_range_status().expect(ERR) == RangeStatus::Valid)
    {
        // Retrieve measured distance.
        let distance = vl.get_distance().expect(ERR);
    }
}

Dependencies

~1MB
~28K SLoC