I bough this VL53L0X module and for starters, the module wouldn't show 0mm when I had my finger touching the sensor. It would show 40mm. This was an easy fix, I just manually took away 40mm. But as I bring my hand closer to the sensor the distance decreases and goes into negative numbers and then when my hand is nearly touching the sensor it goes back to 0 (the output increases when the distance is decreasing). And sometimes the sensor just stops working altogether and throws random errors. And when I have the sensor a fixed distance from something, the output is very unstable and keeps changing even though no real world changes are made. Are there any good, reliable alternatives for the VL53L0X? I used the example code:
/* This example shows how to use continuous mode to take
range measurements with the VL53L0X. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.
The range readings are in units of mm. */
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
void setup()
{
Serial.begin(9600);
Wire.begin();
sensor.setTimeout(500);
if (!sensor.init())
{
Serial.println("Failed to detect and initialize sensor!");
while (1) {}
}
// Start continuous back-to-back mode (take readings as
// fast as possible). To use continuous timed mode
// instead, provide a desired inter-measurement period in
// ms (e.g. sensor.startContinuous(100)).
sensor.startContinuous();
}
void loop()
{
Serial.print(sensor.readRangeContinuousMillimeters());
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
}