mirror of https://github.com/arendst/Tasmota.git
55 lines
1.7 KiB
C++
55 lines
1.7 KiB
C++
/*
|
|
This example takes range measurements with the VL53L1X and displays additional
|
|
details (status and signal/ambient rates) for each measurement, which can help
|
|
you determine whether the sensor is operating normally and the reported range is
|
|
valid. The range is in units of mm, and the rates are in units of MCPS (mega
|
|
counts per second).
|
|
*/
|
|
|
|
#include <Wire.h>
|
|
#include <VL53L1X.h>
|
|
|
|
VL53L1X sensor;
|
|
|
|
void setup()
|
|
{
|
|
Serial.begin(115200);
|
|
Wire.begin();
|
|
Wire.setClock(400000); // use 400 kHz I2C
|
|
|
|
sensor.setTimeout(500);
|
|
if (!sensor.init())
|
|
{
|
|
Serial.println("Failed to detect and initialize sensor!");
|
|
while (1);
|
|
}
|
|
|
|
// Use long distance mode and allow up to 50000 us (50 ms) for a measurement.
|
|
// You can change these settings to adjust the performance of the sensor, but
|
|
// the minimum timing budget is 20 ms for short distance mode and 33 ms for
|
|
// medium and long distance modes. See the VL53L1X datasheet for more
|
|
// information on range and timing limits.
|
|
sensor.setDistanceMode(VL53L1X::Long);
|
|
sensor.setMeasurementTimingBudget(50000);
|
|
|
|
// Start continuous readings at a rate of one measurement every 50 ms (the
|
|
// inter-measurement period). This period should be at least as long as the
|
|
// timing budget.
|
|
sensor.startContinuous(50);
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
sensor.read();
|
|
|
|
Serial.print("range: ");
|
|
Serial.print(sensor.ranging_data.range_mm);
|
|
Serial.print("\tstatus: ");
|
|
Serial.print(VL53L1X::rangeStatusToString(sensor.ranging_data.range_status));
|
|
Serial.print("\tpeak signal: ");
|
|
Serial.print(sensor.ranging_data.peak_signal_count_rate_MCPS);
|
|
Serial.print("\tambient: ");
|
|
Serial.print(sensor.ranging_data.ambient_count_rate_MCPS);
|
|
|
|
Serial.println();
|
|
} |