{"id":9399,"date":"2020-11-06T16:48:12","date_gmt":"2020-11-06T16:48:12","guid":{"rendered":"https:\/\/wolles-elektronikkiste.de\/vl53l0x-and-vl53l1x-tof-distance-sensors"},"modified":"2020-12-02T01:37:45","modified_gmt":"2020-12-02T01:37:45","slug":"vl53l0x-and-vl53l1x-tof-distance-sensors","status":"publish","type":"post","link":"https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors","title":{"rendered":"VL53L0X and VL53L1X &#8211; ToF distance sensors"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">About the post<\/h2>\n<p>In my series about light, gesture, motion and distance sensors, which I will conclude with an <a href=\"https:\/\/wolles-elektronikkiste.de\/en\/sensor-comparison-ambient-light-proximity-motion\" target=\"_blank\" rel=\"noopener noreferrer\">overall overview,<\/a> I would like to introduce the distance sensors VL53L0X and VL53L1X this time. Technically, these can be regarded as big brothers of the VL6180X, which I introduced <a href=\"https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor\" target=\"_blank\" rel=\"noopener noreferrer\">in my last post.<\/a> I will first discuss the properties of the actual sensors and modules. Then I will introduce libraries that make it easy to use the functions of the VL53L0X and VL53L1X.<\/p>\r\n\r\n<p>The most significant difference between the three sensors is their range. You can use the VL6180X up to distances of 20 cm. The VL53L0X and VL53L1X have much longer ranges of up to 200 and 400 cm respectively. Data sheets for the VL53L0X and VL53L1X can be found <a href=\"https:\/\/www.st.com\/resource\/en\/datasheet\/vl53l0x.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a> or <a href=\"https:\/\/www.st.com\/resource\/en\/datasheet\/vl53l1x.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">The measuring principle<\/h2>\n<p>The sensors work according to the time-of-flight (ToF) principle. They have an IR laser whose reflected rays are evaluated in terms of their flight time. The IR laser is a <a href=\"https:\/\/de.wikipedia.org\/wiki\/Oberfl%C3%A4chenemitter\" target=\"_blank\" rel=\"noopener noreferrer\">Vertical Cavity Surface-Emitting Laser<\/a> (VCSEL) with a wavelength of 940 nanometers invisible to humans. The reflected light is detected by a photodiode array. The sensors use <a href=\"https:\/\/de.wikipedia.org\/wiki\/Avalanche-Photodiode#Einzelphotonenz%C3%A4hlung\" target=\"_blank\" rel=\"noopener noreferrer\">so-called Single Photon Avalanche Diodes<\/a> (SPADs).<p>\r\n\r\n<p>VL53L0X and VL53L1X achieve a resolution in millimeters. To cover one millimeter, light takes about 3.3 x 10<sup>-12<\/sup> seconds. So, it&#8217;s amazing that a cheap mass-produced article can offer such a high resolution. If a computer or microcontroller only performed a single clock during this time, this would be equivalent to a clock speed of 330 GHz. And with a single clock, you still haven&#8217;t performed any calculation operation.<\/p>\r\n\r\n<p>For those who have not read the last article: if you are interested in the details of the method, you can read an article about it <a href=\"https:\/\/www.neumueller.com\/Downloads\/News\/Article\/PDF\/Fachartikel-Time-of-Flight-2016.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a> or get smart <a href=\"https:\/\/de.wikipedia.org\/wiki\/Elektrooptische_Entfernungsmessung\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a> on Wikipedia.<\/p>\n<h2 class=\"wp-block-heading\">Basic properties<\/h2>\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"772\" height=\"390\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL53L1X_sensor.png\" alt=\"VL53L0X and VL53L1X - the bare sensors\" class=\"wp-image-8159\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL53L1X_sensor.png 772w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL53L1X_sensor-300x152.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL53L1X_sensor-768x388.png 768w\" sizes=\"auto, (max-width: 772px) 100vw, 772px\" \/><figcaption>The bare sensors &#8211; left: VL53L0X, right: VL53L1X<\/figcaption><\/figure>\n<h3 class=\"wp-block-heading\">VL53L0X vs VL53L1X &#8211; Similarities<\/h3>\n\n<h4 class=\"wp-block-heading\">General comments<\/h4>\n<p>Vl53L0X and VL53L1X are pure distance sensors, unlike the VL6180X. Both tolerate a voltage range between 2.6 and 3.5 volts. However, this only applies to the bare sensors. For the modules, on the other hand, the voltage range depends on the individual design. Both sensors have identical pinouts.<\/p>\n<h4 class=\"wp-block-heading\">Calibration<\/h4>\n<p>Both sensors can be calibrated regarding various parameters, which are particularly useful when the devices are installed in housings. For example, you can set a distance offset.<\/p>\r\n\r\n<p>If you install the VL53L0X or VL53L1X behind a cover glass, the reflection results in the so-called cross-talk effect, which leads to errors in the distance measurement. This effect can be minimized by calibration. For further calibrations, please look at the data sheets.<\/p>\n<h4 class=\"wp-block-heading\">Communication and control via APIs<\/h4>\n<p>Communication is via I2C. You can change the default I2C address (0x29) via commands and not via address pins as you might be used to. However, both sensors &#8220;forget&#8221; the new address when disconnected from power. By cleverly using the XSHUT pins (to be discussed) you can create a procedure that performs the address change again each time it is switched on.<\/p>\r\n\r\n<p>The control of VL53L0X and VL53L1X is somewhat unusual. Because normally, you are used to being provided with data sheets including register lists. Here, on the other hand, the manufacturer <a href=\"https:\/\/www.st.com\/content\/st_com\/en.html\" target=\"_blank\" rel=\"noopener noreferrer\">STMicroelectronics<\/a> has decided to provide so-called APIs (Application Programming Interfaces). I am not the first to be surprised about this, nor the only one who would have liked to have had a normal register documentation. There is also a <a href=\"https:\/\/community.st.com\/s\/question\/0D50X00009XkeHcSAJ\/vl53l0x-register-map\" target=\"_blank\" rel=\"noopener noreferrer\">discussion<\/a> in the STM community, including a statement from the manufacturer.<\/p>\r\n\r\n<p>The description of the VL53L0X API can be found <a href=\"https:\/\/www.st.com\/content\/ccc\/resource\/technical\/document\/user_manual\/group0\/6b\/4e\/24\/90\/d8\/05\/47\/a5\/DM00279088\/files\/DM00279088.pdf\/jcr:content\/translations\/en.DM00279088.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>, for the VL53L1X see <a href=\"https:\/\/www.st.com\/content\/ccc\/resource\/technical\/document\/user_manual\/group0\/98\/0d\/38\/38\/5d\/84\/49\/1f\/DM00474730\/files\/DM00474730.pdf\/jcr:content\/translations\/en.DM00474730.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>.<\/p>\n<h4 class=\"wp-block-heading\">Interrupts<\/h4>\n<p>Both sensors have interrupt functions. You can be informed by an interrupt if a new reading is available. Or you can set a threshold above or below which an interrupt is triggered. Alternatively, you can define a window inside or outside where an interrupt is triggered.<\/p>\n<h3 class=\"wp-block-heading\">VL53L0X vs. VL53L1X &#8211; Differences<\/h3>\n\n<h4 class=\"wp-block-heading\">Range<\/h4>\n<p>As already mentioned, the most obvious difference between the VL53L0X and VL53L1X is the range. Under optimal conditions, i.e. with good reflection of the surface to be detected and little interference light, you can reach up to two meters with the VL53L0X, but with the VL53L1X up to four meters.<\/p>\n<h4 class=\"wp-block-heading\">Measuring profiles<\/h4>\n<p>On the VL53L0X you can change various parameters to optimize performance for different application conditions. This includes above all the maximum measuring time (timing budget), \u00a0 but also the permissible dispersion of the results, the laser pulse periods and the minimum signal rate. The statistical variance is given as sigma in mm because interference signals are detected time-shifted to the reference value and this deviation over the speed of light corresponds to a distance.<\/p>\r\n\r\n<p>You are relatively free to choose the parameters, but you have to be careful that the settings do harmonize. Because in the worst case, you always exceed the timing budget without a valid metric. It is convenient that there are pre-built profiles in the description of the API for the VL53L0X:<\/p>\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2020\/11\/Ranges__VL53L0X_engl.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"205\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2020\/11\/Ranges__VL53L0X_engl-1024x205.png\" alt=\"Measuring profiles of the VL53L0X\" class=\"wp-image-9924\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2020\/11\/Ranges__VL53L0X_engl-1024x205.png 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2020\/11\/Ranges__VL53L0X_engl-300x60.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2020\/11\/Ranges__VL53L0X_engl-768x154.png 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2020\/11\/Ranges__VL53L0X_engl-1320x264.png 1320w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2020\/11\/Ranges__VL53L0X_engl.png 1385w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Measuring profiles of the VL53L0X<\/figcaption><\/figure><p>The VL53L1X offers the three distance modes Long, Medium and Short. For these modes, the measurement parameters are predefined or linked in the API. However, you can change some parameters to generate measurements under unfavorable conditions, for example. How accurate these measurement results are then is another question.<\/p>\r\n\r\n<p>The range depends on the ambient light to varying degrees, depending on the mode. Here are the values in the dark \/ in strong ambient light at 88% reflection and timing budget of 100 milliseconds:<\/p>\r\n<ul>\r\n \t<li>Short: 136 cm \/ 135 cm<\/li>\r\n \t<li>Medium: 290 cm \/ 76 cm<\/li>\r\n \t<li>Long: 360 cm \/ 73 cm<\/li>\r\n<\/ul><p>Selecting &#8220;long&#8221; on the VL53L1X is no guarantee that you will reach really long ranges under all conditions! With lots of light, you can reach even longer ranges using &#8220;short&#8221;.<\/p><p>In addition to the choice of distance mode, the range and accuracy of the VL53L1X is also affected by the timing budget. 20 milliseconds is the shortest setting that only works in short mode. At 140 milliseconds, the 4 meters can be reached in the dark provided good reflection. In the data sheet there are graphs showing the dependence on distance and repeatability vs. timing budget.<\/p>\n<h4 class=\"wp-block-heading\">Measuring frequency<\/h4>\n<p>With the VL53L0X you can set the following modes regarding the measuring frequency:<\/p>\r\n<ul>\r\n \t<li>Single ranging: single measurement &#8220;on request&#8221; (polling)<\/li>\r\n \t<li>Continuous ranging: if one measurement is finished, the next one is immediately started<\/li>\r\n \t<li>Timed ranging: continuous measurement with adjustable pauses in between<\/li>\r\n<\/ul><p>The VL53L1X only offers continuous mode and timed ranging Mode.<\/p>\n<h4 class=\"wp-block-heading\">(De-)activation of spads<\/h4>\n<p>The VL53L1X has a 16 x 16 spad array for detection. By default, all spads are enabled. This creates a conical field of view (FoV) covering 27\u00b0. By disabling a part of the pads, the cone can be narrowed to 15\u00b0 at 4 x 4 activated spads and the direction (ROI = Region Of Interest) can be specified. The VL53L0X does not offer these options.<\/p>\n<h2 class=\"wp-block-heading\">VL53L0X and VL53L1X modules<\/h2>\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL53LxX_gross.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"530\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL53LxX_gross-1024x530.jpg\" alt=\"\" class=\"wp-image-8161\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL53LxX_gross-1024x530.jpg 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL53LxX_gross-300x155.jpg 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL53LxX_gross-768x398.jpg 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL53LxX_gross-1320x683.jpg 1320w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL53LxX_gross.jpg 1698w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Various VL53L0X and VL53L1X modules<\/figcaption><\/figure>\n<h4 class=\"wp-block-heading\">Prices<\/h4>\n<p>Vl53L0X modules are available on <a href=\"https:\/\/smile.amazon.de\/s?k=vl53l0x&amp;__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;crid=3L28530BMZSQA&amp;qid=1566120768&amp;sprefix=VL53L%2Caps%2C152&amp;ref=sr_pg_1\" target=\"_blank\" rel=\"noopener noreferrer\">Amazon,<\/a> for example, in a wide price range from approx. 7 euros (including shipping) to over 20 euros. I didn&#8217;t see VL53L1X modules under 16 euros on <a href=\"https:\/\/smile.amazon.de\/s?k=vl53l1x&amp;__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;ref=nb_sb_noss_1\" target=\"_blank\" rel=\"noopener noreferrer\">Amazon<\/a> (as of August 2019). This is certainly because the sensor has only been available since the beginning of 2018. The price will certainly go down.<\/p>\n<h4 class=\"wp-block-heading\">Properties<\/h4>\n<p>In contrast to the bare sensors, the modules usually have voltage regulators, so you can usually operate them between 2.8 and 5.5 volts. Checks the supplier&#8217;s details.<\/p>\r\n\r\n<p>Most modules have six inputs\/outputs. In addition to GND \/ VCC and SDA\/SCL for I2C communication, these are XSHUT and GPIO1. Sometimes the labeling is slightly different. XSHUT is used to turn off the module. To do this, you have to set XSHUT to LOW. A module-internal pull-up resistor sets the pin to HIGH, i.e. you can just leave it unconnected if you don&#8217;t want to use the feature. GPIO1 is the interrupt output. If you don&#8217;t use interrupts, you can leave it unconnected. The interrupt polarity can be adjusted.<\/p>\n<h4 class=\"wp-block-heading\">Wiring<\/h4>\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2020\/05\/VL53L0x_Wiring_upd.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"500\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2020\/05\/VL53L0x_Wiring_upd-1024x500.png\" alt=\"Connecting a VL53L0X (Model Adafruit) to an Arduino UNO\" class=\"wp-image-8537\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2020\/05\/VL53L0x_Wiring_upd-1024x500.png 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2020\/05\/VL53L0x_Wiring_upd-300x146.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2020\/05\/VL53L0x_Wiring_upd-768x375.png 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2020\/05\/VL53L0x_Wiring_upd-1320x644.png 1320w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2020\/05\/VL53L0x_Wiring_upd.png 1494w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Connecting a VL53L0X (Model Adafruit) to an Arduino UNO<\/figcaption><\/figure><p>The wiring of the VL53L0X and VL53L1X modules is identical. I didn&#8217;t need pull-up resistors for the I2C lines. You have to try it yourself. Pin 3 serves as an interrupt pin. The LED on pin 13 is required for one of the sample sketches.<\/p>\n<h2 class=\"wp-block-heading\">Libraries<\/h2>\n<p>I tried some libraries for the sensors. Unfortunately, I couldn&#8217;t find a library for the VL53L0X that I was fully satisfied with. In particular, the interrupt functions were not implemented. However, the distance measurement itself works, for example, with the library of <a href=\"https:\/\/github.com\/adafruit\/Adafruit_VL53L0X\" target=\"_blank\" rel=\"noopener noreferrer\">Adafruit<\/a> or with that of <a href=\"https:\/\/github.com\/pololu\/vl53l0x-arduino\" target=\"_blank\" rel=\"noopener noreferrer\">Pololu<\/a>. The Adafruit library provides an example sketch for operating two VL53L0X. The procedure is also described <a href=\"https:\/\/learn.adafruit.com\/adafruit-vl53l0x-micro-lidar-distance-sensor-breakout\/arduino-code\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a> in the learning area of Adafruit. Overall, however, I liked the library of Pololu better.<\/p>\r\n\r\n<p>For the VL53L1X, the Sparkfun library is my favorite because it has implemented all the features that I consider to be relevant. You can get it <a href=\"https:\/\/github.com\/sparkfun\/SparkFun_VL53L1X_Arduino_Library\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a> on Github or you can search for it through the library manager of the Arduino IDE.<\/p>\n<h3 class=\"wp-block-heading\">Control of the VL53L0X with the Pololu library<\/h3>\n<p>The example sketch for single measurements supplied by Pololu has implemented the above-mentioned measurement profiles from the user manual of the VL53L0X API. The default is the default mode. If you want to enable the long range, high-speed or high accuracy mode, all you have to do is uncommenting the corresponding &#8220;#define&#8221; lines. You can also change the conditions for these modes. However &#8211; as already mentioned before &#8211; of course, all this has to fit together.<\/p><div class=\"scroll-paragraph-long\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-title=\"VL53L0X_Pololu_Single_example.ino\" data-enlighter-group=\"VL53L0X_Pololu_Single_example.ino\">\/*\u00a0This\u00a0example\u00a0shows\u00a0how\u00a0to\u00a0get\u00a0single-shot\u00a0range\r\n\u00a0measurements\u00a0from\u00a0the\u00a0VL53L0X.\u00a0The\u00a0sensor\u00a0can\u00a0optionally\u00a0be\r\n\u00a0configured\u00a0with\u00a0different\u00a0ranging\u00a0profiles,\u00a0as\u00a0described\u00a0in\r\n\u00a0the\u00a0VL53L0X\u00a0API\u00a0user\u00a0manual,\u00a0to\u00a0get\u00a0better\u00a0performance\u00a0for\r\n\u00a0a\u00a0certain\u00a0application.\u00a0This\u00a0code\u00a0is\u00a0based\u00a0on\u00a0the\u00a0four\r\n\u00a0\"SingleRanging\"\u00a0examples\u00a0in\u00a0the\u00a0VL53L0X\u00a0API.\r\n\r\n\u00a0The\u00a0range\u00a0readings\u00a0are\u00a0in\u00a0units\u00a0of\u00a0mm.\u00a0*\/\r\n\r\n#include\u00a0&lt;Wire.h&gt;\r\n#include\u00a0&lt;VL53L0X.h&gt;\r\n\r\nVL53L0X\u00a0sensor;\r\n\r\n\/\/\u00a0Uncomment\u00a0this\u00a0line\u00a0to\u00a0use\u00a0long\u00a0range\u00a0mode.\u00a0This\r\n\/\/\u00a0increases\u00a0the\u00a0sensitivity\u00a0of\u00a0the\u00a0sensor\u00a0and\u00a0extends\u00a0its\r\n\/\/\u00a0potential\u00a0range,\u00a0but\u00a0increases\u00a0the\u00a0likelihood\u00a0of\u00a0getting\r\n\/\/\u00a0an\u00a0inaccurate\u00a0reading\u00a0because\u00a0of\u00a0reflections\u00a0from\u00a0objects\r\n\/\/\u00a0other\u00a0than\u00a0the\u00a0intended\u00a0target.\u00a0It\u00a0works\u00a0best\u00a0in\u00a0dark\r\n\/\/\u00a0conditions.\r\n\r\n\/\/#define\u00a0LONG_RANGE\r\n\r\n\/\/\u00a0Uncomment\u00a0ONE\u00a0of\u00a0these\u00a0two\u00a0lines\u00a0to\u00a0get\r\n\/\/\u00a0-\u00a0higher\u00a0speed\u00a0at\u00a0the\u00a0cost\u00a0of\u00a0lower\u00a0accuracy\u00a0OR\r\n\/\/\u00a0-\u00a0higher\u00a0accuracy\u00a0at\u00a0the\u00a0cost\u00a0of\u00a0lower\u00a0speed\r\n\r\n\/\/#define\u00a0HIGH_SPEED\r\n\/\/#define\u00a0HIGH_ACCURACY\r\n\r\nvoid\u00a0setup()\r\n{\r\n\u00a0\u00a0Serial.begin(9600);\r\n\u00a0\u00a0Wire.begin();\r\n\r\n\u00a0\u00a0sensor.init();\r\n\u00a0\u00a0sensor.setTimeout(500);\r\n\r\n#if\u00a0defined\u00a0LONG_RANGE\r\n\u00a0\u00a0\/\/\u00a0lower\u00a0the\u00a0return\u00a0signal\u00a0rate\u00a0limit\u00a0(default\u00a0is\u00a00.25\u00a0MCPS)\r\n\u00a0\u00a0sensor.setSignalRateLimit(0.1);\r\n\u00a0\u00a0\/\/\u00a0increase\u00a0laser\u00a0pulse\u00a0periods\u00a0(defaults\u00a0are\u00a014\u00a0and\u00a010\u00a0PCLKs)\r\n\u00a0\u00a0sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodPreRange,\u00a018);\r\n\u00a0\u00a0sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodFinalRange,\u00a014);\r\n#endif\r\n\r\n#if\u00a0defined\u00a0HIGH_SPEED\r\n\u00a0\u00a0\/\/\u00a0reduce\u00a0timing\u00a0budget\u00a0to\u00a020\u00a0ms\u00a0(default\u00a0is\u00a0about\u00a033\u00a0ms)\r\n\u00a0\u00a0sensor.setMeasurementTimingBudget(20000);\r\n#elif\u00a0defined\u00a0HIGH_ACCURACY\r\n\u00a0\u00a0\/\/\u00a0increase\u00a0timing\u00a0budget\u00a0to\u00a0200\u00a0ms\r\n\u00a0\u00a0sensor.setMeasurementTimingBudget(200000);\r\n#endif\r\n}\r\n\r\nvoid\u00a0loop()\r\n{\r\n\u00a0\u00a0Serial.print(sensor.readRangeSingleMillimeters());\r\n\u00a0\u00a0if\u00a0(sensor.timeoutOccurred())\u00a0{\u00a0Serial.print(\"\u00a0TIMEOUT\");\u00a0}\r\n\r\n\u00a0\u00a0Serial.println();\r\n}<\/pre>\r\n&nbsp;\r\n\r\n<\/div><p>An example sketch for the continuous mode is also part of the library. But it only really makes sense in conjunction with interrupts. And they don&#8217;t seem to be implemented in the library (so far).<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-title=\"VL53L0X_Pololu_Continous_example.ino\" data-enlighter-group=\"VL53L0X_Pololu_Continous_example.ino\">\/*\u00a0This\u00a0example\u00a0shows\u00a0how\u00a0to\u00a0use\u00a0continuous\u00a0mode\u00a0to\u00a0take\r\nrange\u00a0measurements\u00a0with\u00a0the\u00a0VL53L0X.\u00a0It\u00a0is\u00a0based\u00a0on\r\nvl53l0x_ContinuousRanging_Example.c\u00a0from\u00a0the\u00a0VL53L0X\u00a0API.\r\n\r\nThe\u00a0range\u00a0readings\u00a0are\u00a0in\u00a0units\u00a0of\u00a0mm.\u00a0*\/\r\n\r\n#include\u00a0&lt;Wire.h&gt;\r\n#include\u00a0&lt;VL53L0X.h&gt;\r\n\r\nVL53L0X\u00a0sensor;\r\n\r\nvoid\u00a0setup()\r\n{\r\n\u00a0\u00a0Serial.begin(9600);\r\n\u00a0\u00a0Wire.begin();\r\n\r\n\u00a0\u00a0sensor.init();\r\n\u00a0\u00a0sensor.setTimeout(500);\r\n\r\n\u00a0\u00a0\/\/\u00a0Start\u00a0continuous\u00a0back-to-back\u00a0mode\u00a0(take\u00a0readings\u00a0as\r\n\u00a0\u00a0\/\/\u00a0fast\u00a0as\u00a0possible).\u00a0\u00a0To\u00a0use\u00a0continuous\u00a0timed\u00a0mode\r\n\u00a0\u00a0\/\/\u00a0instead,\u00a0provide\u00a0a\u00a0desired\u00a0inter-measurement\u00a0period\u00a0in\r\n\u00a0\u00a0\/\/\u00a0ms\u00a0(e.g.\u00a0sensor.startContinuous(100)).\r\n\u00a0\u00a0sensor.startContinuous();\r\n}\r\n\r\nvoid\u00a0loop()\r\n{\r\n\u00a0\u00a0Serial.print(sensor.readRangeContinuousMillimeters());\r\n\u00a0\u00a0if\u00a0(sensor.timeoutOccurred())\u00a0{\u00a0Serial.print(\"\u00a0TIMEOUT\");\u00a0}\r\n\r\n\u00a0\u00a0Serial.println();\r\n}<\/pre>\r\n&nbsp;\n<h3 class=\"wp-block-heading\">Control of the VL53L1X with the Sparkfun library<\/h3>\n<p>As a start for the Sparkfun library, I recommend the example sketch &#8220;Example2_SetDistanceMode.ino&#8221;. The library has implemented the distance modes &#8220;Short&#8221; (up to 1.3 meters) and &#8220;Long&#8221; (up to 4 meters). Otherwise, no further adjustment options are shown in the sketch.<\/p><div class=\"scroll-paragraph-long\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-title=\"Example2_SetDistanceMode.ino\" data-enlighter-group=\"Example2_SetDistanceMode.ino\">\/*\r\n\u00a0\u00a0Reading\u00a0distance\u00a0from\u00a0the\u00a0laser\u00a0based\u00a0VL53L1X\r\n\u00a0\u00a0By:\u00a0Nathan\u00a0Seidle\r\n\u00a0\u00a0Revised\u00a0by:\u00a0Andy\u00a0England\r\n\u00a0\u00a0SparkFun\u00a0Electronics\r\n\u00a0\u00a0Date:\u00a0April\u00a04th,\u00a02018\r\n\u00a0\u00a0License:\u00a0This\u00a0code\u00a0is\u00a0public\u00a0domain\u00a0but\u00a0you\u00a0buy\u00a0me\u00a0a\u00a0beer\u00a0if\u00a0you\u00a0use\u00a0this\u00a0and\u00a0we\u00a0meet\u00a0someday\u00a0(Beerware\u00a0license).\r\n\r\n\u00a0\u00a0SparkFun\u00a0labored\u00a0with\u00a0love\u00a0to\u00a0create\u00a0this\u00a0code.\u00a0Feel\u00a0like\u00a0supporting\u00a0open\u00a0source\u00a0hardware?\u00a0\r\n\u00a0\u00a0Buy\u00a0a\u00a0board\u00a0from\u00a0SparkFun!\u00a0https:\/\/www.sparkfun.com\/products\/14667\r\n\r\n\u00a0\u00a0This\u00a0example\u00a0prints\u00a0the\u00a0distance\u00a0to\u00a0an\u00a0object.\r\n\r\n\u00a0\u00a0Are\u00a0you\u00a0getting\u00a0weird\u00a0readings?\u00a0Be\u00a0sure\u00a0the\u00a0vacuum\u00a0tape\u00a0has\u00a0been\u00a0removed\u00a0from\u00a0the\u00a0sensor.\r\n*\/\r\n\r\n#include\u00a0&lt;Wire.h&gt;\r\n#include\u00a0\"SparkFun_VL53L1X.h\"\r\n\r\n\/\/Optional\u00a0interrupt\u00a0and\u00a0shutdown\u00a0pins.\r\n#define\u00a0SHUTDOWN_PIN\u00a02\r\n#define\u00a0INTERRUPT_PIN\u00a03\r\n\r\nSFEVL53L1X\u00a0distanceSensor;\r\n\/\/Uncomment\u00a0the\u00a0following\u00a0line\u00a0to\u00a0use\u00a0the\u00a0optional\u00a0shutdown\u00a0and\u00a0interrupt\u00a0pins.\r\n\/\/SFEVL53L1X\u00a0distanceSensor(Wire,\u00a0SHUTDOWN_PIN,\u00a0INTERRUPT_PIN);\r\n\r\nvoid\u00a0setup(void)\r\n{\r\n\u00a0\u00a0Wire.begin();\r\n\r\n\u00a0\u00a0Serial.begin(9600);\r\n\u00a0\u00a0Serial.println(\"VL53L1X\u00a0Qwiic\u00a0Test\");\r\n\r\n\u00a0\u00a0if\u00a0(distanceSensor.begin()\u00a0==\u00a0true)\r\n\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0Serial.println(\"Sensor\u00a0online!\");\r\n\u00a0\u00a0}\r\n\u00a0\u00a0\r\n\u00a0\u00a0distanceSensor.setDistanceModeShort();\r\n\u00a0\u00a0\/\/distanceSensor.setDistanceModeLong();\r\n}\r\n\r\nvoid\u00a0loop(void)\r\n{\r\n\u00a0\u00a0distanceSensor.startRanging();\u00a0\/\/Write\u00a0configuration\u00a0bytes\u00a0to\u00a0initiate\u00a0measurement\r\n\r\n\u00a0\u00a0int\u00a0distance\u00a0=\u00a0distanceSensor.getDistance();\u00a0\/\/Get\u00a0the\u00a0result\u00a0of\u00a0the\u00a0measurement\u00a0from\u00a0the\u00a0sensor\r\n\r\n\u00a0\u00a0distanceSensor.stopRanging();\r\n\r\n\u00a0\u00a0Serial.print(\"Distance(mm):\u00a0\");\r\n\u00a0\u00a0Serial.print(distance);\r\n\r\n\u00a0\u00a0float\u00a0distanceInches\u00a0=\u00a0distance\u00a0*\u00a00.0393701;\r\n\u00a0\u00a0float\u00a0distanceFeet\u00a0=\u00a0distanceInches\u00a0\/\u00a012.0;\r\n\r\n\u00a0\u00a0Serial.print(\"\\tDistance(ft):\u00a0\");\r\n\u00a0\u00a0Serial.print(distanceFeet,\u00a02);\r\n\r\n\u00a0\u00a0Serial.println();\r\n}\r\n<\/pre>\r\n&nbsp;\r\n\r\n<\/div><p>If you look at the public functions of the library file, you will get a good overview of the settings implemented in the library Sparkfun_VL53L1X. These are very well commented:<\/p><div class=\"scroll-paragraph-long\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-title=\"Auszug aus SparkFun_VL53L1X.h\" data-enlighter-group=\"Auszug aus SparkFun_VL53L1X.h\">bool\u00a0init();\u00a0\/\/Deprecated\u00a0version\u00a0of\u00a0begin\r\n\u00a0\u00a0bool\u00a0begin();\u00a0\/\/Initialization\u00a0of\u00a0sensor\r\n\u00a0\u00a0bool\u00a0checkID();\u00a0\/\/Check\u00a0the\u00a0ID\u00a0of\u00a0the\u00a0sensor,\u00a0returns\u00a0true\u00a0if\u00a0ID\u00a0is\u00a0correct\r\n\u00a0\u00a0void\u00a0sensorOn();\u00a0\/\/Toggles\u00a0shutdown\u00a0pin\u00a0to\u00a0turn\u00a0sensor\u00a0on\u00a0and\u00a0off\r\n\u00a0\u00a0\u00a0\u00a0void\u00a0sensorOff();\u00a0\/\/Toggles\u00a0shutdown\u00a0pin\u00a0to\u00a0turn\u00a0sensor\u00a0on\u00a0and\u00a0off\r\n\u00a0\u00a0VL53L1X_Version_t\u00a0getSoftwareVersion();\u00a0\/\/Get's\u00a0the\u00a0current\u00a0ST\u00a0software\u00a0version\r\n\u00a0\u00a0void\u00a0setI2CAddress(uint8_t\u00a0addr);\u00a0\/\/Set\u00a0the\u00a0I2C\u00a0address\r\n\u00a0\u00a0int\u00a0getI2CAddress();\u00a0\/\/Get\u00a0the\u00a0I2C\u00a0address\r\n\u00a0\u00a0void\u00a0clearInterrupt();\u00a0\/\/\u00a0Clear\u00a0the\u00a0interrupt\u00a0flag\r\n\u00a0\u00a0void\u00a0setInterruptPolarityHigh();\u00a0\/\/Set\u00a0the\u00a0polarity\u00a0of\u00a0an\u00a0active\u00a0interrupt\u00a0to\u00a0High\r\n\u00a0\u00a0void\u00a0setInterruptPolarityLow();\u00a0\/\/Set\u00a0the\u00a0polarity\u00a0of\u00a0an\u00a0active\u00a0interrupt\u00a0to\u00a0Low\r\n\u00a0\u00a0uint8_t\u00a0getInterruptPolarity();\u00a0\/\/get\u00a0the\u00a0current\u00a0interrupt\u00a0polarity\r\n\u00a0\u00a0void\u00a0startRanging();\u00a0\/\/Begins\u00a0taking\u00a0measurements\r\n\u00a0\u00a0void\u00a0stopRanging();\u00a0\/\/Stops\u00a0taking\u00a0measurements\r\n\u00a0\u00a0bool\u00a0checkForDataReady();\u00a0\/\/Checks\u00a0the\u00a0to\u00a0see\u00a0if\u00a0data\u00a0is\u00a0ready\r\n\u00a0\u00a0void\u00a0setTimingBudgetInMs(uint16_t\u00a0timingBudget);\u00a0\/\/Set\u00a0the\u00a0timing\u00a0budget\u00a0for\u00a0a\u00a0measurement\r\n\u00a0\u00a0uint16_t\u00a0getTimingBudgetInMs();\u00a0\/\/Get\u00a0the\u00a0timing\u00a0budget\u00a0for\u00a0a\u00a0measurement\r\n\u00a0\u00a0void\u00a0setDistanceModeLong();\u00a0\/\/Set\u00a0to\u00a04M\u00a0range\r\n\u00a0\u00a0void\u00a0setDistanceModeShort();\u00a0\/\/Set\u00a0to\u00a01.3M\u00a0range\r\n\u00a0\u00a0uint8_t\u00a0getDistanceMode();\u00a0\/\/Get\u00a0the\u00a0distance\u00a0mode,\u00a0returns\u00a01\u00a0for\u00a0short\u00a0and\u00a02\u00a0for\u00a0long\r\n\u00a0\u00a0void\u00a0setIntermeasurementPeriod(uint16_t\u00a0intermeasurement);\u00a0\/\/Set\u00a0time\u00a0between\u00a0measurements\u00a0in\u00a0ms\r\n\u00a0\u00a0uint16_t\u00a0getIntermeasurementPeriod();\u00a0\/\/Get\u00a0time\u00a0between\u00a0measurements\u00a0in\u00a0ms\r\n\u00a0\u00a0bool\u00a0checkBootState();\u00a0\/\/Check\u00a0if\u00a0the\u00a0VL53L1X\u00a0has\u00a0been\u00a0initialized\r\n\u00a0\u00a0uint16_t\u00a0getSensorID();\u00a0\/\/Get\u00a0the\u00a0sensor\u00a0ID\r\n\u00a0\u00a0uint16_t\u00a0getDistance();\u00a0\/\/Returns\u00a0distance\r\n\u00a0\u00a0uint16_t\u00a0getSignalPerSpad();\u00a0\/\/Returns\u00a0the\u00a0average\u00a0signal\u00a0rate\u00a0per\u00a0SPAD\u00a0(The\u00a0sensitive\u00a0pads\u00a0that\u00a0detect\u00a0light,\u00a0the\u00a0VL53L1X\u00a0has\u00a0a\u00a016x16\u00a0array\u00a0of\u00a0these)\u00a0in\u00a0kcps\/SPAD,\u00a0or\u00a0kilo\u00a0counts\u00a0per\u00a0second\u00a0per\u00a0SPAD.\r\n\u00a0\u00a0uint16_t\u00a0getAmbientPerSpad();\u00a0\/\/Returns\u00a0the\u00a0ambient\u00a0noise\u00a0when\u00a0not\u00a0measuring\u00a0a\u00a0signal\u00a0in\u00a0kcps\/SPAD.\r\n\u00a0\u00a0uint16_t\u00a0getSignalRate();\u00a0\/\/Returns\u00a0the\u00a0signal\u00a0rate\u00a0in\u00a0kcps.\u00a0All\u00a0SPADs\u00a0combined.\r\n\u00a0\u00a0uint16_t\u00a0getSpadNb();\u00a0\/\/Returns\u00a0the\u00a0current\u00a0number\u00a0of\u00a0enabled\u00a0SPADs\r\n\u00a0\u00a0uint16_t\u00a0getAmbientRate();\u00a0\/\/\u00a0Returns\u00a0the\u00a0total\u00a0ambinet\u00a0rate\u00a0in\u00a0kcps.\u00a0All\u00a0SPADs\u00a0combined.\r\n\u00a0\u00a0uint8_t\u00a0getRangeStatus();\u00a0\/\/Returns\u00a0the\u00a0range\u00a0status,\u00a0which\u00a0can\u00a0be\u00a0any\u00a0of\u00a0the\u00a0following.\u00a00\u00a0=\u00a0no\u00a0error,\u00a01\u00a0=\u00a0signal\u00a0fail,\u00a02\u00a0=\u00a0sigma\u00a0fail,\u00a07\u00a0=\u00a0wrapped\u00a0target\u00a0fail\r\n\u00a0\u00a0void\u00a0setOffset(int16_t\u00a0offset);\u00a0\/\/Manually\u00a0set\u00a0an\u00a0offset\u00a0in\u00a0mm\r\n\u00a0\u00a0int16_t\u00a0getOffset();\u00a0\/\/Get\u00a0the\u00a0current\u00a0offset\u00a0in\u00a0mm\r\n\u00a0\u00a0void\u00a0setXTalk(uint16_t\u00a0xTalk);\u00a0\/\/Manually\u00a0set\u00a0the\u00a0value\u00a0of\u00a0crosstalk\u00a0in\u00a0counts\u00a0per\u00a0second\u00a0(cps),\u00a0which\u00a0is\u00a0interference\u00a0from\u00a0any\u00a0sort\u00a0of\u00a0window\u00a0in\u00a0front\u00a0of\u00a0your\u00a0sensor.\r\n\u00a0\u00a0uint16_t\u00a0getXTalk();\u00a0\/\/Returns\u00a0the\u00a0current\u00a0crosstalk\u00a0value\u00a0in\u00a0cps.\r\n\u00a0\u00a0void\u00a0setDistanceThreshold(uint16_t\u00a0lowThresh,\u00a0uint16_t\u00a0hiThresh,\u00a0uint8_t\u00a0window);\/\/Set\u00a0bounds\u00a0for\u00a0the\u00a0interrupt.\u00a0lowThresh\u00a0and\u00a0hiThresh\u00a0are\u00a0the\u00a0bounds\u00a0of\u00a0your\u00a0interrupt\u00a0while\u00a0window\u00a0decides\u00a0when\u00a0the\u00a0interrupt\u00a0should\u00a0fire.\u00a0The\u00a0options\u00a0for\u00a0window\u00a0are\u00a0shown\u00a0below.\r\n\u00a0\u00a0\/\/0:\u00a0Interrupt\u00a0triggered\u00a0on\u00a0measured\u00a0distance\u00a0below\u00a0lowThresh.\r\n\u00a0\u00a0\/\/1:\u00a0Interrupt\u00a0triggered\u00a0on\u00a0measured\u00a0distance\u00a0above\u00a0hiThresh.\r\n\u00a0\u00a0\/\/2:\u00a0Interrupt\u00a0triggered\u00a0on\u00a0measured\u00a0distance\u00a0outside\u00a0of\u00a0bounds.\r\n\u00a0\u00a0\/\/3:\u00a0Interrupt\u00a0triggered\u00a0on\u00a0measured\u00a0distance\u00a0inside\u00a0of\u00a0bounds.\r\n\u00a0\u00a0uint16_t\u00a0getDistanceThresholdWindow();\u00a0\/\/Returns\u00a0distance\u00a0threshold\u00a0window\u00a0option\r\n\u00a0\u00a0uint16_t\u00a0getDistanceThresholdLow();\u00a0\/\/Returns\u00a0lower\u00a0bound\u00a0in\u00a0mm.\r\n\u00a0\u00a0uint16_t\u00a0getDistanceThresholdHigh();\u00a0\/\/Returns\u00a0upper\u00a0bound\u00a0in\u00a0mm\r\n\u00a0\u00a0void\u00a0setROI(uint16_t\u00a0x,\u00a0uint16_t\u00a0y);\u00a0\/\/Set\u00a0the\u00a0height\u00a0and\u00a0width\u00a0of\u00a0the\u00a0ROI\u00a0in\u00a0SPADs,\u00a0lowest\u00a0possible\u00a0option\u00a0is\u00a04.\u00a0ROI\u00a0is\u00a0always\u00a0centered.\r\n\u00a0\u00a0uint16_t\u00a0getROIX();\u00a0\/\/Returns\u00a0the\u00a0width\u00a0of\u00a0the\u00a0ROI\u00a0in\u00a0SPADs\r\n\u00a0\u00a0uint16_t\u00a0getROIY();\u00a0\/\/Returns\u00a0the\u00a0height\u00a0of\u00a0the\u00a0ROI\u00a0in\u00a0SPADs\r\n\u00a0\u00a0void\u00a0setSignalThreshold(uint16_t\u00a0signalThreshold);\u00a0\/\/Programs\u00a0the\u00a0necessary\u00a0threshold\u00a0to\u00a0trigger\u00a0a\u00a0measurement.\u00a0Default\u00a0is\u00a01024\u00a0kcps.\r\n\u00a0\u00a0uint16_t\u00a0getSignalThreshold();\u00a0\/\/Returns\u00a0the\u00a0signal\u00a0threshold\u00a0in\u00a0kcps\r\n\u00a0\u00a0void\u00a0setSigmaThreshold(uint16_t\u00a0sigmaThreshold);\u00a0\/\/Programs\u00a0a\u00a0new\u00a0sigma\u00a0threshold\u00a0in\u00a0mm.\u00a0(default=15\u00a0mm)\r\n\u00a0\u00a0uint16_t\u00a0getSigmaThreshold();\u00a0\/\/Returns\u00a0the\u00a0current\u00a0sigma\u00a0threshold.\r\n\u00a0\u00a0void\u00a0startTemperatureUpdate();\u00a0\/\/Recalibrates\u00a0the\u00a0sensor\u00a0for\u00a0temperature\u00a0changes.\u00a0Run\u00a0this\u00a0any\u00a0time\u00a0the\u00a0temperature\u00a0has\u00a0changed\u00a0by\u00a0more\u00a0than\u00a08\u00b0C\r\n\u00a0\u00a0void\u00a0calibrateOffset(uint16_t\u00a0targetDistanceInMm);\u00a0\/\/Autocalibrate\u00a0the\u00a0offset\u00a0by\u00a0placing\u00a0a\u00a0target\u00a0a\u00a0known\u00a0distance\u00a0away\u00a0from\u00a0the\u00a0sensor\u00a0and\u00a0passing\u00a0this\u00a0known\u00a0distance\u00a0into\u00a0the\u00a0function.\r\n\u00a0\u00a0void\u00a0calibrateXTalk(uint16_t\u00a0targetDis<\/pre>\r\n&nbsp;\r\n\r\n<\/div><p>I wrote my own sketch in which I defined an interrupt window. When a distance is detected within the thresholds, an interrupt is triggered, the LED on pin 13 lights up and a message is displayed on the serial monitor. In addition, I have added a function to the sketch, which outputs some settings of the VL53L1X on the serial monitor at the beginning.<\/p><div class=\"scroll-paragraph-long\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-title=\"VL53L1X_Interrupt_Example.ino\" data-enlighter-group=\"VL53L1X_Interrupt_Example.ino\">#include\u00a0&lt;ComponentObject.h&gt;\r\n#include\u00a0&lt;RangeSensor.h&gt;\r\n#include\u00a0&lt;SparkFun_VL53L1X.h&gt;\r\n#include\u00a0&lt;vl53l1x_class.h&gt;\r\n#include\u00a0&lt;vl53l1_error_codes.h&gt;\r\n\r\n\r\n#include\u00a0&lt;Wire.h&gt;\r\n#include\u00a0\"SparkFun_VL53L1X.h\"\r\n\r\n\/\/Optional\u00a0interrupt\u00a0and\u00a0shutdown\u00a0pins.\r\n#define\u00a0SHUTDOWN_PIN\u00a02\r\n#define\u00a0INTERRUPT_PIN\u00a03\r\nvolatile\u00a0bool\u00a0event\u00a0=\u00a0false;\r\nbyte\u00a0ledPin\u00a0=\u00a013;\r\n\r\n\/\/SFEVL53L1X\u00a0distanceSensor;\r\n\/\/Uncomment\u00a0the\u00a0following\u00a0line\u00a0to\u00a0use\u00a0the\u00a0optional\u00a0shutdown\u00a0and\u00a0interrupt\u00a0pins.\r\nSFEVL53L1X\u00a0distanceSensor(Wire,\u00a0SHUTDOWN_PIN,\u00a0INTERRUPT_PIN);\r\n\r\nvoid\u00a0setup()\u00a0{\r\n\u00a0\u00a0Wire.begin();\r\n\u00a0\u00a0distanceSensor.sensorOn();\r\n\u00a0\u00a0attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN),\u00a0blink,\u00a0FALLING);\r\n\u00a0\u00a0pinMode(ledPin,\u00a0OUTPUT);\r\n\u00a0\u00a0Serial.begin(9600);\r\n\u00a0\u00a0Serial.println(\"Interrupt\u00a0Test\");\r\n\r\n\u00a0\u00a0if\u00a0(distanceSensor.begin()\u00a0==\u00a0true)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0Serial.println(\"Sensor\u00a0online!\");\r\n\u00a0\u00a0}\r\n\r\n\u00a0\u00a0distanceSensor.setInterruptPolarityLow();\r\n\u00a0\u00a0distanceSensor.setDistanceThreshold(300,\u00a01000,\u00a03);\r\n\u00a0\u00a0showSettings();\r\n\u00a0\u00a0delay(2000);\u00a0\/\/\u00a0um\u00a0Zeit\u00a0zu\u00a0haben\u00a0die\u00a0Settings\u00a0zu\u00a0sehen\r\n\u00a0\u00a0distanceSensor.startRanging();\r\n\u00a0\u00a0event\u00a0=\u00a0false;\r\n\u00a0\u00a0distanceSensor.clearInterrupt();\r\n\r\n}\r\n\r\nvoid\u00a0loop(void)\u00a0{\r\n\u00a0\u00a0if\u00a0(event)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0int\u00a0distance\u00a0=\u00a0distanceSensor.getDistance();\r\n\u00a0\u00a0\u00a0\u00a0Serial.print(\"Interrupt!\u00a0Current\u00a0distance:\u00a0\");\r\n\u00a0\u00a0\u00a0\u00a0Serial.println(distance);\r\n\u00a0\u00a0\u00a0\u00a0digitalWrite(ledPin,\u00a0HIGH);\r\n\u00a0\u00a0\u00a0\u00a0delay(500);\r\n\u00a0\u00a0\u00a0\u00a0digitalWrite(ledPin,\u00a0LOW);\r\n\u00a0\u00a0\u00a0\u00a0event\u00a0=\u00a0false;\r\n\u00a0\u00a0\u00a0\u00a0distanceSensor.clearInterrupt();\r\n\u00a0\u00a0}\r\n}\r\n\r\nvoid\u00a0blink()\u00a0{\r\n\u00a0\u00a0event\u00a0=\u00a0true;\r\n}\r\n\r\nvoid\u00a0showSettings()\u00a0{\r\n\u00a0\u00a0Serial.print(\"Interrupt\u00a0polarity\u00a0is:\u00a0\");\r\n\u00a0\u00a0byte\u00a0interruptPolarity\u00a0=\u00a0distanceSensor.getInterruptPolarity();\r\n\u00a0\u00a0if\u00a0(interruptPolarity\u00a0==\u00a00)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0Serial.println(\"Low\");\r\n\u00a0\u00a0}\r\n\u00a0\u00a0if\u00a0(interruptPolarity\u00a0==\u00a01)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0Serial.println(\"High\");\r\n\u00a0\u00a0}\r\n\u00a0\u00a0Serial.print(\"Offset\u00a0[mm]:\u00a0\");\r\n\u00a0\u00a0unsigned\u00a0int\u00a0offset\u00a0=\u00a0distanceSensor.getOffset();\r\n\u00a0\u00a0Serial.println(offset);\r\n\u00a0\u00a0Serial.print(\"Distance\u00a0Mode:\u00a0\");\r\n\u00a0\u00a0byte\u00a0distMode\u00a0=\u00a0distanceSensor.getDistanceMode();\r\n\u00a0\u00a0if\u00a0(distMode\u00a0==\u00a01)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0Serial.println(\"Short\u00a0Mode\");\r\n\u00a0\u00a0}\r\n\u00a0\u00a0else\u00a0if\u00a0(distMode\u00a0==\u00a02)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0Serial.println(\"Long\u00a0Mode\");\r\n\u00a0\u00a0}\r\n\u00a0\u00a0unsigned\u00a0int\u00a0timingBudget\u00a0=\u00a0distanceSensor.getTimingBudgetInMs();\r\n\u00a0\u00a0Serial.print(\"Timing\u00a0Budget:\u00a0\");\r\n\u00a0\u00a0Serial.println(timingBudget);\r\n\r\n\u00a0\u00a0unsigned\u00a0int\u00a0interMeasurementPeriod\u00a0=\u00a0distanceSensor.getIntermeasurementPeriod();\r\n\u00a0\u00a0Serial.print(\"Inter\u00a0Measurement\u00a0Period\u00a0[ms]:\u00a0\");\r\n\u00a0\u00a0Serial.println(interMeasurementPeriod);\r\n\r\n\u00a0\u00a0unsigned\u00a0int\u00a0spads\u00a0=\u00a0distanceSensor.getROIX();\r\n\u00a0\u00a0Serial.print(\"Active\u00a0Spad\u00a0Array,\u00a0x:\u00a0\");\r\n\u00a0\u00a0Serial.print(spads);\r\n\u00a0\u00a0spads\u00a0=\u00a0distanceSensor.getROIY();\r\n\u00a0\u00a0Serial.print(\",\u00a0y:\u00a0\");\r\n\u00a0\u00a0Serial.println(spads);\r\n}<\/pre>\r\n&nbsp;\r\n\r\n<\/div>\n<h4 class=\"wp-block-heading\">Encountered problems<\/h4>\n<p>Most features work wonderfully, but I&#8217;ve noticed a few minor issues:<\/p>\r\n<ul>\r\n \t<li>If you change the I2C address with <code>setI2CAddress()<\/code>, then it becomes an address moved by one bit. Internally, the read\/write bit appears to be added.<\/li>\r\n \t<li>I could only reduce the Spad Array to a minimum of 11 x 11. There were no more reasonable results below that &#8211; no matter what else I set<\/li>\r\n \t<li>From time to time, the VL53L1X does not do what it is supposed to do after changing settings. Then it helps to take him off power for a short time. By the way, this also applies to the VL53L0X.<\/li>\r\n<\/ul>\n<h2 class=\"wp-block-heading\">Acknowledgement<\/h2>\n<p>The little male on the post picture is from <a href=\"https:\/\/pixabay.com\/de\/users\/3D_Maennchen-1553824\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=2506815\" target=\"_blank\" rel=\"noopener noreferrer\">Peggy and Marco Lachmann-Anke<\/a> on <a href=\"https:\/\/pixabay.com\/de\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=2506815\" target=\"_blank\" rel=\"noopener noreferrer\">Pixabay<\/a>. <a href=\"https:\/\/pixabay.com\/de\/users\/HolgersFotografie-47038\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=2734127\" target=\"_blank\" rel=\"noopener noreferrer\">Holger Langmaier<\/a> made the tape measure, also on <a href=\"https:\/\/pixabay.com\/de\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=2734127\" target=\"_blank\" rel=\"noopener noreferrer\">Pixabay<\/a>. The Fritzing scheme of the VL53L0X comes from <a href=\"https:\/\/github.com\/adafruit\/Fritzing-Library\" target=\"_blank\" rel=\"noopener noreferrer\">Adafruit<\/a> on Github. Then, of course, I would like to thank <a href=\"https:\/\/www.pololu.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Pololu<\/a> and <a href=\"https:\/\/www.sparkfun.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Sparkfun<\/a> for the libraries.<\/p>","protected":false},"excerpt":{"rendered":"<p>The characteristics of the VL53L0X and VL53L1X are explained and the sensors are compared. Suitable libraries for controlling the sensors are introduced. <\/p>\n","protected":false},"author":1,"featured_media":8158,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[573,572],"tags":[556,822,816,819,801,815,824,817,811,820,803,813,807,810,808],"class_list":["post-9399","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-distance-light-movement","category-sensors","tag-arduino-en-2","tag-distance-sensor","tag-field-of-view-en","tag-fov-en","tag-proximity-detection-en","tag-region-of-interest-en-2","tag-register-list-en","tag-roi-en","tag-spads-en","tag-time-of-flight-en","tag-tof-en","tag-vcsel-en","tag-vl53l0x-en-2","tag-vl53l0x-vs-vl53l1x-en","tag-vl53l1x-en"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>VL53L0X and VL53L1X - ToF distance sensors &#8226; Wolles Elektronikkiste<\/title>\n<meta name=\"description\" content=\"The characteristics of the VL53L0X and VL53L1X are explained and the sensors are compared. Suitable libraries for controlling the sensors are introduced.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"VL53L0X and VL53L1X - ToF distance sensors &#8226; Wolles Elektronikkiste\" \/>\n<meta property=\"og:description\" content=\"The characteristics of the VL53L0X and VL53L1X are explained and the sensors are compared. Suitable libraries for controlling the sensors are introduced.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors\" \/>\n<meta property=\"og:site_name\" content=\"Wolles Elektronikkiste\" \/>\n<meta property=\"article:published_time\" content=\"2020-11-06T16:48:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-02T01:37:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/M\u00e4nnchen_mit_vl53l0x-und-Massband.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"1200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Wolfgang Ewald\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Wolfgang Ewald\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl53l0x-and-vl53l1x-tof-distance-sensors#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl53l0x-and-vl53l1x-tof-distance-sensors\"},\"author\":{\"name\":\"Wolfgang Ewald\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\"},\"headline\":\"VL53L0X and VL53L1X &#8211; ToF distance sensors\",\"datePublished\":\"2020-11-06T16:48:12+00:00\",\"dateModified\":\"2020-12-02T01:37:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl53l0x-and-vl53l1x-tof-distance-sensors\"},\"wordCount\":2038,\"commentCount\":5,\"publisher\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\"},\"image\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl53l0x-and-vl53l1x-tof-distance-sensors#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/M\u00e4nnchen_mit_vl53l0x-und-Massband.jpg\",\"keywords\":[\"Arduino\",\"distance sensor\",\"field of view\",\"FoV\",\"Proximity detection\",\"region of interest\",\"register list\",\"ROI\",\"SPADS\",\"Time of Flight\",\"ToF\",\"VCSEL\",\"VL53L0X\",\"VL53L0X vs VL53L1X\",\"VL53L1X\"],\"articleSection\":[\"Distance, light, movement\",\"Sensors\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl53l0x-and-vl53l1x-tof-distance-sensors#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl53l0x-and-vl53l1x-tof-distance-sensors\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl53l0x-and-vl53l1x-tof-distance-sensors\",\"name\":\"VL53L0X and VL53L1X - ToF distance sensors &#8226; Wolles Elektronikkiste\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl53l0x-and-vl53l1x-tof-distance-sensors#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl53l0x-and-vl53l1x-tof-distance-sensors#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/M\u00e4nnchen_mit_vl53l0x-und-Massband.jpg\",\"datePublished\":\"2020-11-06T16:48:12+00:00\",\"dateModified\":\"2020-12-02T01:37:45+00:00\",\"description\":\"The characteristics of the VL53L0X and VL53L1X are explained and the sensors are compared. Suitable libraries for controlling the sensors are introduced.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl53l0x-and-vl53l1x-tof-distance-sensors#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl53l0x-and-vl53l1x-tof-distance-sensors\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl53l0x-and-vl53l1x-tof-distance-sensors#primaryimage\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/M\u00e4nnchen_mit_vl53l0x-und-Massband.jpg\",\"contentUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/M\u00e4nnchen_mit_vl53l0x-und-Massband.jpg\",\"width\":1200,\"height\":1200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl53l0x-and-vl53l1x-tof-distance-sensors#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"VL53L0X and VL53L1X &#8211; ToF distance sensors\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#website\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\",\"name\":\"Wolles Elektronikkiste\",\"description\":\"Die wunderbare Welt der Elektronik\",\"publisher\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\",\"name\":\"Wolfgang Ewald\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\",\"contentUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\",\"width\":512,\"height\":512,\"caption\":\"Wolfgang Ewald\"},\"logo\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"VL53L0X and VL53L1X - ToF distance sensors &#8226; Wolles Elektronikkiste","description":"The characteristics of the VL53L0X and VL53L1X are explained and the sensors are compared. Suitable libraries for controlling the sensors are introduced.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors","og_locale":"en_US","og_type":"article","og_title":"VL53L0X and VL53L1X - ToF distance sensors &#8226; Wolles Elektronikkiste","og_description":"The characteristics of the VL53L0X and VL53L1X are explained and the sensors are compared. Suitable libraries for controlling the sensors are introduced.","og_url":"https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors","og_site_name":"Wolles Elektronikkiste","article_published_time":"2020-11-06T16:48:12+00:00","article_modified_time":"2020-12-02T01:37:45+00:00","og_image":[{"width":1200,"height":1200,"url":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/M\u00e4nnchen_mit_vl53l0x-und-Massband.jpg","type":"image\/jpeg"}],"author":"Wolfgang Ewald","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Wolfgang Ewald","Est. reading time":"18 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors#article","isPartOf":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors"},"author":{"name":"Wolfgang Ewald","@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46"},"headline":"VL53L0X and VL53L1X &#8211; ToF distance sensors","datePublished":"2020-11-06T16:48:12+00:00","dateModified":"2020-12-02T01:37:45+00:00","mainEntityOfPage":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors"},"wordCount":2038,"commentCount":5,"publisher":{"@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46"},"image":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors#primaryimage"},"thumbnailUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/M\u00e4nnchen_mit_vl53l0x-und-Massband.jpg","keywords":["Arduino","distance sensor","field of view","FoV","Proximity detection","region of interest","register list","ROI","SPADS","Time of Flight","ToF","VCSEL","VL53L0X","VL53L0X vs VL53L1X","VL53L1X"],"articleSection":["Distance, light, movement","Sensors"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors#respond"]}]},{"@type":"WebPage","@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors","url":"https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors","name":"VL53L0X and VL53L1X - ToF distance sensors &#8226; Wolles Elektronikkiste","isPartOf":{"@id":"https:\/\/wolles-elektronikkiste.de\/en#website"},"primaryImageOfPage":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors#primaryimage"},"image":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors#primaryimage"},"thumbnailUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/M\u00e4nnchen_mit_vl53l0x-und-Massband.jpg","datePublished":"2020-11-06T16:48:12+00:00","dateModified":"2020-12-02T01:37:45+00:00","description":"The characteristics of the VL53L0X and VL53L1X are explained and the sensors are compared. Suitable libraries for controlling the sensors are introduced.","breadcrumb":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors#primaryimage","url":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/M\u00e4nnchen_mit_vl53l0x-und-Massband.jpg","contentUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/M\u00e4nnchen_mit_vl53l0x-und-Massband.jpg","width":1200,"height":1200},{"@type":"BreadcrumbList","@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl53l0x-and-vl53l1x-tof-distance-sensors#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/wolles-elektronikkiste.de\/en"},{"@type":"ListItem","position":2,"name":"VL53L0X and VL53L1X &#8211; ToF distance sensors"}]},{"@type":"WebSite","@id":"https:\/\/wolles-elektronikkiste.de\/en#website","url":"https:\/\/wolles-elektronikkiste.de\/en","name":"Wolles Elektronikkiste","description":"Die wunderbare Welt der Elektronik","publisher":{"@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wolles-elektronikkiste.de\/en?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46","name":"Wolfgang Ewald","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png","url":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png","contentUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png","width":512,"height":512,"caption":"Wolfgang Ewald"},"logo":{"@id":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png"}}]}},"_links":{"self":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/posts\/9399","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/comments?post=9399"}],"version-history":[{"count":0,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/posts\/9399\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/media\/8158"}],"wp:attachment":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/media?parent=9399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/categories?post=9399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/tags?post=9399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}