# DFRobot_VL53L1X **Repository Path**: dfrobot/DFRobot_VL53L1X ## Basic Information - **Project Name**: DFRobot_VL53L1X - **Description**: No description available - **Primary Language**: C++ - **License**: LGPL-2.1 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-06-02 - **Last Updated**: 2023-08-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # VL53L1X The VL53L1X is a state-of-the-art, Time-of-Flight (ToF), laser-ranging sensor
It is the fastest miniature ToF sensor on the market with accurate ranging up to 4 m and fast ranging frequency up to 50 Hz
Housed in a miniature and reflowable package, it integrates a SPAD receiving array, a 940 nm invisible Class1 laser emitter, physical infrared filters
and optics to achieve the best ranging performance in various ambient lighting conditions with a range of cover window options
Unlike conventional IR sensors, the VL53L1X uses ST’s latest generation ToF technology which allows absolute distance measurement whatever the target color and reflectance
## DFRobot_VL53L1X Library for Arduino --------------------------------------------------------- Provide an Arduino library for the VL53L1X modules. ## Table of Contents * [Summary](#summary) * [Feature](#feature) * [Installation](#installation) * [Methods](#methods) * [Compatibility](#compatibility) * [Credits](#credits) ## Summary This is a library for the Arduino IDE, which can help Arduino to communicate with DFRobot_VL53L1X laser range sensor.
The library makes it easy to configure the sensor via I2C and read range data from the sensor.
## Feature 1. Serial input via I2C-bus 2. Max sampling rate given by I2C-bus speed 3. Operating voltage range from 2.6 to 3.5V ## Installation Download the library ZIP file and unzip it to the Arduino folder of the library.
## Methods ```C++ #include "DFRobot_VL53L1X.h" /* * @brief init Wire */ DFRobot_VL53L1X(TwoWire *pWire); /* * @brief Init sensor and check the data is ready * * @return true if VL53L1X init succeed * @return false if VL53L1X init failed */ bool begin(); /* * @brief This function starts the ranging distance operation which is continuous */ void startRanging(); /* * @brief This function stops the ranging * */ void stopRanging(); /* * @brief This function programs the timing budget in ms * The predefined values are 20, 50, 100, 200, and 500 * * @param eTimingBudget eBudget_20ms = 20 * eBudget_33ms = 33 * eBudget_50ms = 50 * eBudget_100ms = 100 * eBudget_200ms = 200 * eBudget_500ms = 500 */ void setTimingBudgetInMs(eTimingBudget timingBudget); /* * @brief This function returns the current timing budget in ms. * * @return timing budget */ eTimingBudget getTimingBudgetInMs(); /* * @brief Set long distance mode * Long mode can range up to 4 m in the dark with a timing budget of 200 ms */ void setDistanceModeLong(); /* * @brief Set short distance mode * Short mode maximum distance is limited to 2.2m */ void setDistanceModeShort(); /* * @brief This function programs the intermeasurement period (IMP) in ms * * @param InterMeasurement must be greater than or equal to the timing budget rang: 0~1693 */ void setInterMeasurementInMs(uint16_t interMeasurement); /* * @brief This function returns the intermeasurement period in ms * * @return The intermeasurement period in ms,rang:0~1693 */ uint16_t getInterMeasurementInMs(); /* * @brief This function returns the distance measured by the sensor in mm * * @return The detailed distance */ uint16_t getDistance(); /* * @brief The function applies the offset value in millimeters to the sensor * * @param The user may use this function to apply, to the sensor * The offset found during calibration which is stored in the host system * OffsetValue = targetDistance - sensorDistance * range: -1024~1023 * */ void setOffset(int16_t OffsetValue); /* * @brief The function returns the current offset correction applied to the sensor * * @return The detailed offset value, range: -1024~1023 */ int16_t getOffset(); /* * @brief The function applies the crosstalk value, in cps, to the sensor * * @param The user may use this function to apply, to the sensor * The crosstalk correction found during calibration and stored in the host system * XtalkValue = 512*(SignalRate*(1-(Distance/targetDistance)))/SpadNb * */ void setXTalk(uint16_t XtalkValue); /* * @brief The function returns the current crosstalk value programmed in the sensor * Zero means there is no crosstalk compensation. The unit is cps (counts per second). * * @return The detailed Xtalk value */ uint16_t getXTalk(); /* * @brief Set distance threshold * * @param ThreshLow(in mm) is the threshold under which the device raises an interrupt if window = 0 * ThreshHigh(in mm) is the threshold above which the device raises an interrupt if window = 1 * IntOnNoTarget is the window detection mode where 0 = eVL53L1X_Below, 1 = eVL53L1X_Above, 2 = eVL53L1X_Out, and 3 = eVL53L1X_In */ void setDistanceThreshold(uint16_t ThreshLow, uint16_t ThreshHigh, eWindows Window); /* * @brief This function returns the window detection mode where 0 = below, 1 = above, 2 = out and 3 = in * * @return The threshold window:0 = eVL53L1X_Below, 1 = eVL53L1X_Above, 2 = eVL53L1X_Out, and 3 = eVL53L1X_In */ eWindows getDistanceThresholdWindow(); /* * @brief This function returns the low threshold in mm * * @return The distance low threshold */ uint16_t getDistanceThresholdLow(); /* * @brief This function returns the high threshold in mm * * @return The distance high threshold */ uint16_t getDistanceThresholdHigh(); /* * @brief This function finds the offset and applies the offset * The offset correction value must be stored in the host system * * @param The target distance in mm */ void calibrateOffset(uint16_t targetDistInMm); /* * @brief This function finds the crosstalk compensation value and applies the correction * * @return The target distance in mm */ void calibrateXTalk(uint16_t targetDistInMm); /* * @brief 1D eVL53L1X_ok for ok * eVL53L1X_InitError for init error * eVL53L1X_WriteRegError for I2C write error * eVL53L1X_ReadRegError for I2C read error */ eVL53L1X_Status lastOperateStatus; ``` ## Compatibility MCU | Work Well | Work Wrong | Untested | Remarks ------------------ | :----------: | :----------: | :---------: | ----- Arduino uno | √ | | | RaspberryPi | √ | | | Firebeetle | √ | | | ## Credits ·author [luoyufeng yufeng.luo@dfrobot.com]