{"id":9382,"date":"2020-11-05T20:55:40","date_gmt":"2020-11-05T20:55:40","guid":{"rendered":"https:\/\/wolles-elektronikkiste.de\/vl6180x-tof-proximity-and-ambient-light-sensor"},"modified":"2024-02-18T12:16:47","modified_gmt":"2024-02-18T12:16:47","slug":"vl6180x-tof-proximity-and-ambient-light-sensor","status":"publish","type":"post","link":"https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor","title":{"rendered":"VL6180X &#8211; ToF proximity and ambient light sensor"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">About the post<\/h2>\n\n<p>In my series of posts 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 report this time on the VL6180X module. Sometimes you also come across the designation VL6180, i.e. without &#8220;X&#8221;. However, this is always the same component.<\/p>\r\n<p>First I will focus on the properties of the actual VL6180X, then the modules. Finally, I will introduce a library with which you can easily control this device. I used a Sparkfun library as the basis, which I expanded with interrupt functions. &nbsp;<\/p>\r\n\n<h2 class=\"wp-block-heading\">Basics<\/h2>\n\n<h3 class=\"wp-block-heading\">The measuring principle<\/h3>\n\n<p>The VL6180X measures distances using the ToF (Time-of-Flight) method. Incidentally, the picture for this post at the top shall also indicate this. The VL6180X uses an infrared laser whose reflected light is evaluated in terms of its flight time to calculate the distance. In principle, similar to the well-known ultrasonic sensor HC-SR04. But since we are dealing here with radiation at the speed of light, the obvious question arises how to measure such short flight times with a low-cost component &#8211; it&#8217;s amazing, but it works. 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.&nbsp;<\/p>\r\n<p>In addition, the VL6180X can measure ambient light (ALS) via a photodiode. The measured values can then be converted into lux values.&nbsp;<\/p>\r\n<p>You get the VL6180X modules e.g. <a href=\"https:\/\/smile.amazon.de\/s?k=vl6180x&amp;__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;crid=1HG7PBF3XO9Q9&amp;sprefix=VL6180%2Caps%2C140&amp;ref=nb_sb_ss_i_1_6\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a> at Amazon in a quite large price range. The cheapest ones are 6 &#8211; 7 euros including shipping.&nbsp;<\/p>\r\n<p>As always, I also recommend a look at the <a href=\"https:\/\/www.st.com\/resource\/en\/datasheet\/vl6180x.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">data sheet<\/a>. Because often &#8211; and this is also the case here &#8211; one discovers that components can do much more than is implemented in libraries.&nbsp;<\/p>\r\n\n<h3 class=\"wp-block-heading\">Features of the VL6180X<\/h3>\n\n<p>The VL6180X has a lot of setting options. I will mention only what I consider to be the most important parameters. Many of the parameters are not implemented as public functions in the Sparkfun or my modified library. If you want to change them, you need to modify the default values directly in the library.&nbsp;<\/p>\r\n\n<h4 class=\"wp-block-heading\">Range and measurement modes<\/h4>\n\n<p>According to the data sheet, the VL6180X measures distances up to 10 cm with millimeter accuracy. The modules I tried, had a range of almost 20 cm. This is consistent with information from other sources that I have found. If you need longer ranges up to 200 cm, you can reach for the &#8220;big brothers&#8221; VL53L0X or VL53L1X. I will deal with these in another post. Communication is carried out via I2C.&nbsp;<\/p>\r\n<p>Both the measurement of the light (ALS) and the distance (range) can be done as a single shot or in a continuous mode. The manufacturer recommends not to measure light and distance in parallel continuously, but to switch to the so-called interleaved mode. In interleaved mode, ALS and range measurements are performed sequentially at regular intervals. Measurements in continuous and interleaved mode are particularly suitable if you want to monitor light or distance by the interrupt function.&nbsp;<\/p>\r\n\n<p>For the distance measurement, the measuring time (max convergence time) can be set. The further the distance and the worse the reflection, the longer it takes an accurate measurement. The data sheet includes tables for this. In my experience, however, you are already doing very well with the presets. Ultimately, of course, the requirements depend on your specific application.&nbsp;<\/p>\r\n\n<h4 class=\"wp-block-heading\">Ambient light measurement<\/h4>\n\n<p>You can also set the measurement time (integration period) for light measurement. This is similar to the <a href=\"https:\/\/wolles-elektronikkiste.de\/en\/tsl2561-light-sensor-module\" target=\"_blank\" rel=\"noopener noreferrer\">TSL2561<\/a>presented in my last post. The default value is 100 ms, which corresponds to the upper end of the recommended range of 50 &#8211; 100 ms according to the data sheet. In addition, you can also set various gain factors if necessary (GAIN_<em>x<\/em>, see example sketch).&nbsp;<\/p>\r\n\n<h4 class=\"wp-block-heading\">The hstory buffer<\/h4>\n\n<p>A so-called history buffer stores the last eight light readings (16 bits) or the last sixteen distance values (8 bits) if the function is activated. The history buffer can be switched on and off, read and emptied manually. I used the history buffer for the interrupt function. You can use the data from the history buffer also to evaluate very simple gestures (approximation vs. moving away). &nbsp;<\/p>\r\n\n<h4 class=\"wp-block-heading\">Cross talk compensation<\/h4>\n\n<p>If you install the VL6180X behind a glass pane, the measurement results can be falsified (cross talk). However, this effect can be compensated. The procedure for this is described in the data sheet. However, this feature is not implemented in the library.&nbsp;<\/p>\r\n\n<h4 class=\"wp-block-heading\">Interrupts<\/h4>\n\n<p>Interrupts can be set for light and distance measurement. You can define a lower threshold, an upper threshold or a window. In addition, you can trigger an interrupt for each completed measurement.&nbsp;<\/p>\r\n\n<h4 class=\"wp-block-heading\">I2C address<\/h4>\n\n<p>The default I2C address of the VL6180X is 0x29. Interestingly, you can change the address freely via corresponding register entries. Usually for other I2C devices this works via address pins. The corresponding public function <code>changeAddress(alt,neu)<\/code> is implemented in the library. Actually, the new address should be stored permanently. The change of address worked for me, but my module &#8220;forgot&#8221; its new address again when I cut off the power supply. What a pity. An I2C address scanner can be found <a href=\"https:\/\/wolles-elektronikkiste.de\/en\/i2c-scanner\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>, if you also want to play around with the function. Maybe it works with your modules.&nbsp;<\/p>\r\n\n<h3 class=\"wp-block-heading\">VL6180X Modules<\/h3>\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"429\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL6180X_Modul-1024x429.jpg\" alt=\"A VL6180X module\" class=\"wp-image-2776\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL6180X_Modul-1024x429.jpg 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL6180X_Modul-300x126.jpg 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL6180X_Modul-768x322.jpg 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL6180X_Modul-1320x554.jpg 1320w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">A VL6180X module with internal pull-up resistors<\/figcaption><\/figure>\n\n<p>You get VL6180X modules in different shapes and sizes, but most have at least the same pins:<\/p>\r\n<ul>\r\n<li>VCC\/GND: in contrast to the bare VL6180X ICs, which should be operated between 2.7 and 2.9 volts, most modules (not all, please check!) tolerate between 2.8 and 5.5 volts.&nbsp;<\/li>\r\n<li>SDA\/SCL: I2C connection lines, pull-up resistors may be required. Some modules, such as the model shown, have integrated pull-ups. To activate them, you need to connect the contacts in the &#8220;PU EN&#8221; jumper area. &nbsp;<\/li>\r\n<li>GPIO0 (or &#8220;IO0&#8221; or only &#8220;0&#8221;):&nbsp;\r\n<ul>\r\n<li>can be configured as an &#8220;off switch&#8221;<\/li>\r\n<li>can be configured as an interrupt pin<\/li>\r\n<li>Setting the signal polarity (active-low \/ active-high)<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>GPIO1 (or &#8220;IO1&#8221; or &#8220;1&#8221;):\r\n<ul>\r\n<li>can be configured as an interrupt pin<\/li>\r\n<li>Setting the signal polarity<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n\n<h2 class=\"wp-block-heading\">Control with the (modified) Sparkfun library<\/h2>\n\n<p>There are a number of libraries on Github, e.g. Sparkfun, Adafruit, Pololu and stm32duino. The latter seems very complete, but &#8211; at least for me &#8211; it is quite difficult to &#8220;digest&#8221; because there are no examples. You find it <a href=\"https:\/\/github.com\/stm32duino\/VL6180X\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>, and you can make your own mind.<\/p>\r\n<p>Unfortunately, I couldn&#8217;t find any other that had implemented the interrupt function. Finally, I took the Sparkfun library and expanded it. The original can be found <a href=\"https:\/\/github.com\/sparkfun\/SparkFun_ToF_Range_Finder-VL6180_Arduino_Library\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a> on Github. You can get my extended version VL6180X_WE with interrupt function <a href=\"https:\/\/github.com\/wollewald\/VL6180X_WE\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a> or directly from the library management of the Arduino IDE.<\/p>\r\n\n<h3 class=\"wp-block-heading\">Wiring<\/h3>\n\n<p>The wiring shown here works for both example sketches. It requires that the module works with 5 volts and that the module provides pull-up resistors for the I2C lines.&nbsp;<\/p>\r\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL6180X_Ard_Wiring.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"657\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL6180X_Ard_Wiring-1024x657.png\" alt=\"Wiring of the VL6180X\" class=\"wp-image-2786\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL6180X_Ard_Wiring-1024x657.png 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL6180X_Ard_Wiring-300x192.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL6180X_Ard_Wiring-768x493.png 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/VL6180X_Ard_Wiring.png 1191w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Wiring of the VL6180X<\/figcaption><\/figure>\n\n<h3 class=\"wp-block-heading\">Example sketch for distance and light measurement<\/h3>\n\n<p>The first sketch shows how to perform simple light and distance measurements in single shot mode (also called polling mode). First the required libraries are integrated, then the VL6180X object &#8220;sensor&#8221; is created.&nbsp;<\/p>\r\n<p>You can also omit the part that provides the information about the module. I took it from the original Sparkfun example sketch. The functions <code>VL6180xInit()<\/code> and <code>VL6180xDefaultSettings()<\/code> make settings as recommended by the manufacturer <a href=\"https:\/\/www.st.com\/content\/st_com\/en.html\" target=\"_blank\" rel=\"noopener noreferrer\">STMicroelectronics<\/a> in the <a href=\"https:\/\/www.st.com\/content\/ccc\/resource\/technical\/document\/application_note\/d5\/bb\/ec\/94\/7d\/1e\/40\/a0\/DM00122600.pdf\/files\/DM00122600.pdf\/jcr:content\/translations\/en.DM00122600.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Application Note Document AN4545.<\/a> The list of settings can be found there from page 24 (for those interested).<\/p>\r\n<p>The function <code>getAmbientLight(<\/code><em><code>gain<\/code><\/em><code>)<\/code> does the light measurement. Only the gain is publicly accessible as a parameter. If you want to change more, you have to do it directly in the library. You query the distance with <code>getDistance()<\/code>.<\/p>\r\n\n<div class=\"scroll-paragraph-long\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-title=\"VL6180X_WE_demo.ino\" data-enlighter-group=\"VL6180X_WE_demo.ino\">\/******************************************************************************\r\n\u00a0*\u00a0VL6180X_WE_demo.ino\r\n\u00a0*\u00a0Based\u00a0on\u00a0SparkFun's\u00a0example\r\n\u00a0*\u00a0Only\u00a0Changes:\u00a0\r\n\u00a0*\u00a0\u00a0-\u00a0Baud\u00a0rate\u00a0changed\u00a0to\u00a09600\r\n\u00a0*\u00a0\u00a0-\u00a0Name\u00a0of\u00a0the\u00a0library\r\n\u00a0*\u00a0\u00a0\r\n\u00a0*\u00a0Original\u00a0library\u00a0and\u00a0examples:\r\n\u00a0*\u00a0https:\/\/github.com\/sparkfun\/SparkFun_ToF_Range_Finder-VL6180_Arduino_Library\r\n\u00a0*\u00a0\r\n*******************************************************************************\/\r\n#include\u00a0&lt;Wire.h&gt;\r\n#include\u00a0&lt;VL6180X_WE.h&gt;\r\n\r\n#define\u00a0VL6180X_ADDRESS\u00a00x29\r\n\r\nVL6180xIdentification\u00a0identification;\r\nVL6180x\u00a0sensor(VL6180X_ADDRESS);\r\n\r\nvoid\u00a0setup()\u00a0{\r\n\r\n\u00a0\u00a0Serial.begin(9600);\u00a0\/\/Start\u00a0Serial\u00a0at\u00a09600bps\r\n\u00a0\u00a0Wire.begin();\u00a0\/\/Start\u00a0I2C\u00a0library\r\n\u00a0\u00a0delay(100);\u00a0\/\/\u00a0delay\u00a0.1s\r\n\r\n\u00a0\u00a0sensor.getIdentification(&amp;identification);\u00a0\/\/\u00a0Retrieve\u00a0manufacture\u00a0info\u00a0from\u00a0device\u00a0memory\r\n\u00a0\u00a0printIdentification(&amp;identification);\u00a0\/\/\u00a0Helper\u00a0function\u00a0to\u00a0print\u00a0all\u00a0the\u00a0Module\u00a0information\r\n\r\n\u00a0\u00a0if(sensor.VL6180xInit()\u00a0!=\u00a00){\r\n\u00a0\u00a0\u00a0\u00a0Serial.println(\"FAILED\u00a0TO\u00a0INITALIZE\");\u00a0\/\/Initialize\u00a0device\u00a0and\u00a0check\u00a0for\u00a0errors\r\n\u00a0\u00a0}\u00a0\r\n\r\n\u00a0\u00a0sensor.VL6180xDefaultSettings();\u00a0\/\/Load\u00a0default\u00a0settings\u00a0to\u00a0get\u00a0started.\r\n\u00a0\u00a0delay(100);\u00a0\/\/\u00a0delay\u00a00.1s\r\n}\r\n\r\nvoid\u00a0loop()\u00a0{\r\n\r\n\u00a0\u00a0\/\/Get\u00a0Ambient\u00a0Light\u00a0level\u00a0and\u00a0report\u00a0in\u00a0LUX\r\n\u00a0\u00a0Serial.print(\"Ambient\u00a0Light\u00a0Level\u00a0(Lux)\u00a0=\u00a0\");\r\n\u00a0\u00a0\r\n\u00a0\u00a0\/\/Input\u00a0GAIN\u00a0for\u00a0light\u00a0levels,\u00a0\r\n\u00a0\u00a0\/\/\u00a0GAIN_20\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0Actual\u00a0ALS\u00a0Gain\u00a0of\u00a020\r\n\u00a0\u00a0\/\/\u00a0GAIN_10\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0Actual\u00a0ALS\u00a0Gain\u00a0of\u00a010.32\r\n\u00a0\u00a0\/\/\u00a0GAIN_5\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0Actual\u00a0ALS\u00a0Gain\u00a0of\u00a05.21\r\n\u00a0\u00a0\/\/\u00a0GAIN_2_5\u00a0\u00a0\u00a0\u00a0\/\/\u00a0Actual\u00a0ALS\u00a0Gain\u00a0of\u00a02.60\r\n\u00a0\u00a0\/\/\u00a0GAIN_1_67\u00a0\u00a0\u00a0\/\/\u00a0Actual\u00a0ALS\u00a0Gain\u00a0of\u00a01.72\r\n\u00a0\u00a0\/\/\u00a0GAIN_1_25\u00a0\u00a0\u00a0\/\/\u00a0Actual\u00a0ALS\u00a0Gain\u00a0of\u00a01.28\r\n\u00a0\u00a0\/\/\u00a0GAIN_1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0Actual\u00a0ALS\u00a0Gain\u00a0of\u00a01.01\r\n\u00a0\u00a0\/\/\u00a0GAIN_40\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0Actual\u00a0ALS\u00a0Gain\u00a0of\u00a040\r\n\u00a0\u00a0\r\n\u00a0\u00a0Serial.println(\u00a0sensor.getAmbientLight(GAIN_1)\u00a0);\r\n\r\n\u00a0\u00a0\/\/Get\u00a0Distance\u00a0and\u00a0report\u00a0in\u00a0mm\r\n\u00a0\u00a0Serial.print(\"Distance\u00a0measured\u00a0(mm)\u00a0=\u00a0\");\r\n\u00a0\u00a0Serial.println(\u00a0sensor.getDistance()\u00a0);\u00a0\r\n\r\n\u00a0\u00a0delay(500);\u00a0\u00a0\r\n};\r\n\r\nvoid\u00a0printIdentification(struct\u00a0VL6180xIdentification\u00a0*temp){\r\n\u00a0\u00a0Serial.print(\"Model\u00a0ID\u00a0=\u00a0\");\r\n\u00a0\u00a0Serial.println(temp-&gt;idModel);\r\n\r\n\u00a0\u00a0Serial.print(\"Model\u00a0Rev\u00a0=\u00a0\");\r\n\u00a0\u00a0Serial.print(temp-&gt;idModelRevMajor);\r\n\u00a0\u00a0Serial.print(\".\");\r\n\u00a0\u00a0Serial.println(temp-&gt;idModelRevMinor);\r\n\r\n\u00a0\u00a0Serial.print(\"Module\u00a0Rev\u00a0=\u00a0\");\r\n\u00a0\u00a0Serial.print(temp-&gt;idModuleRevMajor);\r\n\u00a0\u00a0Serial.print(\".\");\r\n\u00a0\u00a0Serial.println(temp-&gt;idModuleRevMinor);\u00a0\u00a0\r\n\r\n\u00a0\u00a0Serial.print(\"Manufacture\u00a0Date\u00a0=\u00a0\");\r\n\u00a0\u00a0Serial.print((temp-&gt;idDate\u00a0&gt;&gt;\u00a03)\u00a0&amp;\u00a00x001F);\r\n\u00a0\u00a0Serial.print(\"\/\");\r\n\u00a0\u00a0Serial.print((temp-&gt;idDate\u00a0&gt;&gt;\u00a08)\u00a0&amp;\u00a00x000F);\r\n\u00a0\u00a0Serial.print(\"\/1\");\r\n\u00a0\u00a0Serial.print((temp-&gt;idDate\u00a0&gt;&gt;\u00a012)\u00a0&amp;\u00a00x000F);\r\n\u00a0\u00a0Serial.print(\"\u00a0Phase:\u00a0\");\r\n\u00a0\u00a0Serial.println(temp-&gt;idDate\u00a0&amp;\u00a00x0007);\r\n\r\n\u00a0\u00a0Serial.print(\"Manufacture\u00a0Time\u00a0(s)=\u00a0\");\r\n\u00a0\u00a0Serial.println(temp-&gt;idTime\u00a0*\u00a02);\r\n\u00a0\u00a0Serial.println();\r\n\u00a0\u00a0Serial.println();\r\n}<\/pre>\r\n<p>&nbsp;<\/p>\r\n<\/div>\n\n<h3 class=\"wp-block-heading\">Example sketch for the interrupt function<\/h3>\n\n<p>To implement interrupts, I have had to add some additional functions to the library. In VL6180X_WE.h. I highlighted the new features in case someone is interested in the details.&nbsp;<\/p>\r\n\n<h4 class=\"wp-block-heading\">Distance interrupt<\/h4>\n\n<p>If you want to use the interrupt function for proximity, you must first define a window outside which an interrupt is triggered. The function for this is called <code>VL6180xSetDistInt(<\/code><em><code>lower limit, upper limit<\/code><\/em><code>)<\/code>. You set the limits in millimeters. If you only want to set a single threshold, then set 0 or 255 as the other because values beyond cannot occur.&nbsp;<\/p>\r\n<p>Then you have to start the distance measurement in continuous mode with <code>getDistanceContinously()<\/code>. With this function, you can also query distance values whenever you want. A query by <code>getDistance()<\/code>, on the other hand, terminates the continuous mode.&nbsp;<\/p>\r\n<p>I set the interrupt pin GPIO1 active-low. In case of an interrupt:<\/p>\r\n<ul>\r\n<li>an &#8220;Interrupt!&#8221; message appears on the serial monitor<\/li>\r\n<li>the LED connected to pin 13 lights up for one second<\/li>\r\n<li>the sketch queries the last value from the history buffer<\/li>\r\n<\/ul>\r\n<p>You have to delete the interrupt manually.<\/p>\r\n<p>It should be noted that the VL6180X continues the measurements despite the interrupt. So you must not let too much time pass between the interrupt event and the reading of the history buffer.&nbsp;<\/p>\r\n<p>The history buffer is activated in the background when setting the continuous mode.<\/p>\r\n\n<h4 class=\"wp-block-heading\">Ambient light interrupts<\/h4>\n\n<p>The interrupts for light measurement work in principle like distance interrupts. First, you comment lines 50, 51, 63 and 64 and uncomment the corresponding lines for the light interrupts. As described above, you should always measure only light <em>or<\/em> distance in continuous mode. &nbsp;<\/p>\r\n<p>You now define a window in lux values beyond which an interrupt is triggered. Then you start the continuous mode for light measurement.&nbsp;<\/p>\r\n<p>When reading history buffer for the light values, you must also pass the gain factor again. You must ensure that you pass the same gain factor with all functions.&nbsp;<\/p>\r\n\n<p><em>Note: if you switch from light interrupts to distance interrupts, i.e. change the sketch and upload it, you may need to take the VL6180X off the current once. I don&#8217;t know the exact reason, but it seems resets do not reset all settings.<\/em><\/p>\r\n\n<div class=\"scroll-paragraph-long\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-group=\"VL6180X_WE_Interrupt_demo.ino\" data-enlighter-title=\"VL6180X_WE_Interrupt_demo.ino\">\/******************************************************************************\r\n * Modified by Wolfgang (Wolle) Ewald\r\n * https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor\r\n * \r\n * ****************************************************************************\r\n * Based on the Sparkfun library example for the VL6180X:\r\n * https:\/\/github.com\/sparkfun\/SparkFun_ToF_Range_Finder-VL6180_Arduino_Library\r\n * \r\n ******************************************************************************\/\r\n\r\n#include &lt;Wire.h&gt;\r\n\r\n#include &lt;VL6180X_WE.h&gt;\r\n#define VL6180X_ADDRESS 0x29\r\n\r\nVL6180xIdentification identification;\r\nVL6180x sensor(VL6180X_ADDRESS);\r\nint interruptPin = 2;\r\nint ledPin = 13;\r\nvolatile bool event = false;\r\nint gain;\r\n\r\n#if defined(ESP8266) || defined(ESP32)\r\nvoid IRAM_ATTR blink(){\r\n#else\r\nvoid blink(){\r\n#endif\r\n  event = true;\r\n}\r\n\r\nvoid setup() {\r\n  pinMode(ledPin, OUTPUT);\r\n  pinMode(interruptPin, INPUT_PULLUP);\r\n  attachInterrupt(digitalPinToInterrupt(interruptPin), blink, FALLING);\r\n  Serial.begin(9600); \r\n  Wire.begin(); \/\/Start I2C library\r\n\r\n  if(sensor.VL6180xInit() != 0){\r\n    Serial.println(\"FAILED TO INITALIZE\"); \/\/Initialize device and check for errors\r\n    }\r\n\r\n  sensor.VL6180xDefaultSettings(); \/\/Load default settings to get started.\r\n  \r\n  delay(100); \/\/ delay 0.1s\r\n\r\n  \/\/Input GAIN for light levels, \r\n  \/\/ GAIN_20     \/\/ Actual ALS Gain of 20\r\n  \/\/ GAIN_10     \/\/ Actual ALS Gain of 10.32\r\n  \/\/ GAIN_5      \/\/ Actual ALS Gain of 5.21\r\n  \/\/ GAIN_2_5    \/\/ Actual ALS Gain of 2.60\r\n  \/\/ GAIN_1_67   \/\/ Actual ALS Gain of 1.72\r\n  \/\/ GAIN_1_25   \/\/ Actual ALS Gain of 1.28\r\n  \/\/ GAIN_1      \/\/ Actual ALS Gain of 1.01\r\n  \/\/ GAIN_40     \/\/ ActualALS Gain of 40\r\n\r\n  \/* Range Threshold Interrupt:\r\n   * The interrupt is set up with VL6180xSetDistInt(low limit \/ high limit);\r\n   * The interrupt is triggered if the measured distance value is OUTSIDE these \r\n   * limits. Keep in mind that the VL6180x will return a distance of 255 if \r\n   * nothing is in the measuring range.\r\n   * Examples: \r\n   * low limit = 50, high limit = 150 =&gt; interrupt is triggered at &lt; 50 and &gt; 150\r\n   * low limit = 50, high limit = 255 =&gt; interrupt is triggered at &lt; 50\r\n   * low limit = 0, high limit = 50 =&gt; interrupts is triggered at &gt; 50\r\n   *\/\r\n  sensor.VL6180xSetDistInt(50,150); \r\n  sensor.getDistanceContinously();\r\n  \r\n  \/\/ ALS Threshold Interrupt:\r\n  \/\/ sensor.VL6180xSetALSInt(GAIN_1,30,200);\r\n  \/\/ sensor.getAmbientLightContinously(GAIN_1); \r\n}\r\n\r\nvoid loop() {\r\n   if(event){\r\n    Serial.println(\"Interrupt!\"); \r\n    \/\/ Serial.print(\"Last ALS Value: \");\r\n    \/\/ Serial.println(sensor.getLastAmbientLightFromHistory(GAIN_1));\r\n    Serial.print(\"Last Distance Value: \");\r\n    Serial.println(sensor.getLastDistanceFromHistory());\r\n    digitalWrite(ledPin, HIGH);\r\n    delay(1000);\r\n    digitalWrite(ledPin, LOW);\r\n    event = false;\r\n    sensor.VL6180xClearInterrupt();\r\n  }\r\n}<\/pre>\r\n<p>\u00a0<\/p>\r\n<\/div>\r\n\n<h2 class=\"wp-block-heading\">Acknowledgement<\/h2>\n\n<p>The nice stopwatch on the main post image is from <a href=\"https:\/\/pixabay.com\/de\/users\/Sadia-343889\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=396862\" target=\"_blank\" rel=\"noopener noreferrer\">Sadia<\/a> on <a href=\"https:\/\/pixabay.com\/de\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=396862\" target=\"_blank\" rel=\"noopener noreferrer\">Pixabay<\/a>. Thank you!<\/p>\r\n<p>Thanks also to Sparkfun for the (basic) library and for the <a href=\"https:\/\/github.com\/sparkfun\/Fritzing_Parts\" target=\"_blank\" rel=\"noopener noreferrer\">Fritzing VL6180 component.<\/a><\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>The VL6180X proximity and ambient light sensing module is introduced. I chose a library that allows you to easily use its functions, including interrupts.<\/p>\n","protected":false},"author":1,"featured_media":8155,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[573,572],"tags":[804,691,558,788,801,564,803,799,796],"class_list":["post-9382","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-distance-light-movement","category-sensors","tag-history-buffer-en","tag-interrupt-en-2","tag-library-en-2","tag-light-intensity-measurement","tag-proximity-detection-en","tag-range-en","tag-tof-en","tag-vl6180-en","tag-vl6180x-en"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>VL6180X - ToF proximity and ambient light sensor &#8226; Wolles Elektronikkiste<\/title>\n<meta name=\"description\" content=\"The VL6180X proximity and ambient light sensing module is introduced. I chose a library that allows you to easily use its functions, including interrupts.\" \/>\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\/vl6180x-tof-proximity-and-ambient-light-sensor\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"VL6180X - ToF proximity and ambient light sensor &#8226; Wolles Elektronikkiste\" \/>\n<meta property=\"og:description\" content=\"The VL6180X proximity and ambient light sensing module is introduced. I chose a library that allows you to easily use its functions, including interrupts.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor\" \/>\n<meta property=\"og:site_name\" content=\"Wolles Elektronikkiste\" \/>\n<meta property=\"article:published_time\" content=\"2020-11-05T20:55:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-02-18T12:16:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/Beitragsbild-1.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=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl6180x-tof-proximity-and-ambient-light-sensor#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl6180x-tof-proximity-and-ambient-light-sensor\"},\"author\":{\"name\":\"Wolfgang Ewald\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\"},\"headline\":\"VL6180X &#8211; ToF proximity and ambient light sensor\",\"datePublished\":\"2020-11-05T20:55:40+00:00\",\"dateModified\":\"2024-02-18T12:16:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl6180x-tof-proximity-and-ambient-light-sensor\"},\"wordCount\":1717,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\"},\"image\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl6180x-tof-proximity-and-ambient-light-sensor#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/Beitragsbild-1.jpg\",\"keywords\":[\"History Buffer\",\"Interrupt\",\"Library\",\"light intensity measurement\",\"Proximity detection\",\"Range\",\"ToF\",\"VL6180\",\"VL6180X\"],\"articleSection\":[\"Distance, light, movement\",\"Sensors\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl6180x-tof-proximity-and-ambient-light-sensor#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl6180x-tof-proximity-and-ambient-light-sensor\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl6180x-tof-proximity-and-ambient-light-sensor\",\"name\":\"VL6180X - ToF proximity and ambient light sensor &#8226; Wolles Elektronikkiste\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl6180x-tof-proximity-and-ambient-light-sensor#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl6180x-tof-proximity-and-ambient-light-sensor#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/Beitragsbild-1.jpg\",\"datePublished\":\"2020-11-05T20:55:40+00:00\",\"dateModified\":\"2024-02-18T12:16:47+00:00\",\"description\":\"The VL6180X proximity and ambient light sensing module is introduced. I chose a library that allows you to easily use its functions, including interrupts.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl6180x-tof-proximity-and-ambient-light-sensor#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl6180x-tof-proximity-and-ambient-light-sensor\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl6180x-tof-proximity-and-ambient-light-sensor#primaryimage\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/Beitragsbild-1.jpg\",\"contentUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/Beitragsbild-1.jpg\",\"width\":1200,\"height\":1200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/vl6180x-tof-proximity-and-ambient-light-sensor#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"VL6180X &#8211; ToF proximity and ambient light sensor\"}]},{\"@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":"VL6180X - ToF proximity and ambient light sensor &#8226; Wolles Elektronikkiste","description":"The VL6180X proximity and ambient light sensing module is introduced. I chose a library that allows you to easily use its functions, including interrupts.","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\/vl6180x-tof-proximity-and-ambient-light-sensor","og_locale":"en_US","og_type":"article","og_title":"VL6180X - ToF proximity and ambient light sensor &#8226; Wolles Elektronikkiste","og_description":"The VL6180X proximity and ambient light sensing module is introduced. I chose a library that allows you to easily use its functions, including interrupts.","og_url":"https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor","og_site_name":"Wolles Elektronikkiste","article_published_time":"2020-11-05T20:55:40+00:00","article_modified_time":"2024-02-18T12:16:47+00:00","og_image":[{"width":1200,"height":1200,"url":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/Beitragsbild-1.jpg","type":"image\/jpeg"}],"author":"Wolfgang Ewald","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Wolfgang Ewald","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor#article","isPartOf":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor"},"author":{"name":"Wolfgang Ewald","@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46"},"headline":"VL6180X &#8211; ToF proximity and ambient light sensor","datePublished":"2020-11-05T20:55:40+00:00","dateModified":"2024-02-18T12:16:47+00:00","mainEntityOfPage":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor"},"wordCount":1717,"commentCount":1,"publisher":{"@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46"},"image":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor#primaryimage"},"thumbnailUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/Beitragsbild-1.jpg","keywords":["History Buffer","Interrupt","Library","light intensity measurement","Proximity detection","Range","ToF","VL6180","VL6180X"],"articleSection":["Distance, light, movement","Sensors"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor#respond"]}]},{"@type":"WebPage","@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor","url":"https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor","name":"VL6180X - ToF proximity and ambient light sensor &#8226; Wolles Elektronikkiste","isPartOf":{"@id":"https:\/\/wolles-elektronikkiste.de\/en#website"},"primaryImageOfPage":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor#primaryimage"},"image":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor#primaryimage"},"thumbnailUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/Beitragsbild-1.jpg","datePublished":"2020-11-05T20:55:40+00:00","dateModified":"2024-02-18T12:16:47+00:00","description":"The VL6180X proximity and ambient light sensing module is introduced. I chose a library that allows you to easily use its functions, including interrupts.","breadcrumb":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor#primaryimage","url":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/Beitragsbild-1.jpg","contentUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/08\/Beitragsbild-1.jpg","width":1200,"height":1200},{"@type":"BreadcrumbList","@id":"https:\/\/wolles-elektronikkiste.de\/en\/vl6180x-tof-proximity-and-ambient-light-sensor#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/wolles-elektronikkiste.de\/en"},{"@type":"ListItem","position":2,"name":"VL6180X &#8211; ToF proximity and ambient light sensor"}]},{"@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\/9382","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=9382"}],"version-history":[{"count":0,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/posts\/9382\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/media\/8155"}],"wp:attachment":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/media?parent=9382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/categories?post=9382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/tags?post=9382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}