Hello,
I have adapted the driver from Pololu (arduino driver) for the FEZ Raptor for the VL53L0X Time-of-Flight Distance Sensor Carrier with Voltage Regulator, 200cm Max.
This driver is left “like this”
It’s work on my robot. (you can download the zip file). 2 classes (I2C and VL53L0X.cs and VL53L0X.h)
To initialize the sensors, just send this command :
#region Démarrage des Télémetre lasers
VL53L0X LIDARLIN = new VL53L0X(0x29, 400, 500); // Lidar lineaire VL53L0X
if(LIDARLIN.init(false)) // Pas besoin de travailler avec 2.8V sur le capteur
{
RobotBluetooth.EnvoiCaracteresAuPC("Capteur VL53L0X ok\n\r");
}
else
{
RobotBluetooth.EnvoiCaracteresAuPC("ERREUR Probleme avec le Capteur VL53L0X\n\r");
}
// Just choose between this 3 modes.
//
#if (LONG_RANGE)
#region LONG_RANGE
// lower the return signal rate limit (default is 0.25 MCPS)
LIDARLIN.setSignalRateLimit(0.1f);
// increase laser pulse periods (defaults are 14 and 10 PCLKs)
LIDARLIN.setVcselPulsePeriod((int)(vcselPeriodType.VcselPeriodPreRange), 18); // Prerange
LIDARLIN.setVcselPulsePeriod((int)(vcselPeriodType.VcselPeriodFinalRange), 14); // Finalrange
#endregion
#endif
#if(HIGH_SPEED)
#region HIGH_SPEED
// reduce timing budget to 20 ms (default is about 33 ms)
LIDARLIN.setMeasurementTimingBudget(20000);
#endregion
#endif
#if(HIGH_ACCURACY)
#region defined HIGH_ACCURACY
// increase timing budget to 200 ms
LIDARLIN.setMeasurementTimingBudget(200000);
#endregion
#endif
#endregion
And for use this sensor.
UInt16 distancemm= LIDARLIN.readRangeSingleMillimeters();
LogInfo("L," + RobotBluetooth.EnvoiCaracteresAuPC("Distance[mm]: "+ distancemm.ToString()+"\n\r"));
if (LIDARLIN.timeoutOccurred()==true)
{
LogInfo("L," + RobotBluetooth.EnvoiCaracteresAuPC("Timeout LIDAR VLX\n\r"));
}
Enjoy !
Excuse me for the french comments… I speak french and sometimes I forget my english…
Original Pololu link : GitHub - pololu/vl53l0x-arduino: Pololu Arduino library for VL53L0X time-of-flight distance sensor