Crates.io | vl53l4cd-ulp |
lib.rs | vl53l4cd-ulp |
version | 0.1.1 |
created_at | 2025-08-22 17:19:48.094628+00 |
updated_at | 2025-08-22 17:59:02.545012+00 |
description | no_std ultra-low-powerdriver for the VL53L4CD |
homepage | |
repository | https://github.com/liebman/vl53l4cd-ulp |
max_upload_size | |
id | 1806664 |
size | 93,035 |
An ultra-low-power Rust driver for the VL53L4CD time-of-flight distance sensor. This no_std
crate provides both sync and async variants that integrates with the embedded-hal
ecosystem.
Add the dependency to your Cargo.toml
:
[dependencies]
vl53l4cd-ulp = "0.1.1"
use vl53l4cd_ulp::VL53L4cd;
let i2c = /* your I2C implementation */;
let delay = /* your delay implementation */;
let mut sensor = VL53L4cd::new(i2c, delay);
sensor.sensor_init().unwrap();
sensor.start_ranging().unwrap();
if sensor.check_for_data_ready().unwrap() {
let measurement = sensor.get_estimated_measurement().unwrap();
println!("Distance: {} mm", measurement.estimated_distance_mm);
sensor.clear_interrupt().unwrap();
}
// Use minimum ROI for lowest power consumption
sensor.set_roi(4).unwrap();
// Set longer measurement intervals
sensor.set_inter_measurement_in_ms(1000).unwrap();
// Configure interrupt thresholds
sensor.set_interrupt_configuration(
100, 500, InterruptOn::InWindow
).unwrap();
The crate can be compiled with the following features:
async
: Enables async I²C supportlog
: Enables logging via the log
cratedefmt
: Enables logging via the defmt
crateuse vl53l4cd_ulp::Error;
match sensor.sensor_init() {
Ok(()) => println!("Sensor initialized"),
Err(Error::Timeout) => println!("Initialization timed out"),
Err(Error::I2cError(e)) => println!("I2C error: {:?}", e),
_ => println!("Other error"),
}
Licensed under either of
at your option.