{"id":3697,"date":"2023-10-28T07:15:24","date_gmt":"2023-10-28T14:15:24","guid":{"rendered":"https:\/\/www.donluc.com\/?p=3697"},"modified":"2023-10-28T07:15:24","modified_gmt":"2023-10-28T14:15:24","slug":"project-28-sensors-sparkfun-line-sensor-qre1113-mk06","status":"publish","type":"post","link":"https:\/\/www.donluc.com\/?p=3697","title":{"rendered":"Project #28 &#8211; Sensors &#8211; SparkFun Line Sensor QRE1113 &#8211; Mk06"},"content":{"rendered":"<div style=\"width: 720px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-3697-1\" width=\"720\" height=\"480\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/10\/DL2308Mk07W.mp4?_=1\" \/><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/10\/DL2308Mk07W.mp4\">https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/10\/DL2308Mk07W.mp4<\/a><\/video><\/div>\n<p>&#8212;&#8212;<\/p>\n<p>#DonLucElectronics #DonLuc #Sensors #LineSensor #AlcoholGasSensor #MinIMU9 #Pololu #Adafruit #SparkFun #Arduino #Project #Fritzing #Programming #Electronics #Microcontrollers #Consultant<\/p>\n<p>&#8212;&#8212;<\/p>\n<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/10\/DL2308Mk07a.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/10\/DL2308Mk07a.png\" alt=\"SparkFun Line Sensor QRE1113\" width=\"720\" height=\"622\" class=\"alignnone size-full wp-image-3699\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/10\/DL2308Mk07a.png 720w, https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/10\/DL2308Mk07a-300x259.png 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>&#8212;&#8212;<\/p>\n<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/10\/DL2308Mk07b.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/10\/DL2308Mk07b.png\" alt=\"SparkFun Line Sensor QRE1113\" width=\"720\" height=\"480\" class=\"alignnone size-full wp-image-3700\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/10\/DL2308Mk07b.png 720w, https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/10\/DL2308Mk07b-300x200.png 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>&#8212;&#8212;<\/p>\n<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/10\/DL2308Mk07c.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/10\/DL2308Mk07c.png\" alt=\"SparkFun Line Sensor QRE1113\" width=\"720\" height=\"480\" class=\"alignnone size-full wp-image-3701\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/10\/DL2308Mk07c.png 720w, https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/10\/DL2308Mk07c-300x200.png 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>&#8212;&#8212;<\/p>\n<p><strong>SparkFun Line Sensor QRE1113 (Analog)<\/strong><\/p>\n<p>This version of the QRE1113 breakout board features an easy-to-use analog output, which will vary depending on the amount of IR light reflected back to the sensor. This tiny board is perfect for line sensing applications and can be used in both 3.3V and 5V systems.<\/p>\n<p>The board&#8217;s QRE1113 IR reflectance sensor is comprised of two parts &#8211; an IR emitting LED and an IR sensitive phototransistor. When you apply power to the VCC and GND pins the IR LED inside the sensor will illuminate. A 100 Ohm resistor is on-board and placed in series with the LED to limit current. A 10k Ohm resistor pulls the output pin high, but when the light from the LED is reflected back onto the phototransistor the output will begin to go lower. The more IR light sensed by the phototransistor, the lower the output voltage of the breakout board.<\/p>\n<p>These sensors are widely used in line following robots, white surfaces reflect much more light than black, so, when directed towards a white surface, the voltage output will be lower than that on a black surface.<\/p>\n<p><strong>DL2308Mk07<\/strong><\/p>\n<p>1 x Adafruit METRO M0 Express<br \/>\n1 x DS3231 Precision RTC FeatherWing<br \/>\n1 x Pololu MinIMU-9 v5 Gyro, Accelerometer, and Compass<br \/>\n1 x Pololu Carrier for MQ Gas Sensors<br \/>\n1 x Alcohol Gas Sensor &#8211; MQ-3<br \/>\n1 x SparkFun Line Sensor &#8211; QRE1113<br \/>\n1 x ProtoScrewShield<br \/>\n1 x Rocker Switch &#8211; SPST<br \/>\n2 x Resistor 10K Ohm<br \/>\n1 x CR1220 3V Lithium Coin Cell Battery<br \/>\n1 x SparkFun Cerberus USB Cable<\/p>\n<p><strong>Adafruit METRO M0 Express<\/strong><\/p>\n<p>LED &#8211; LED_BUILTIN<br \/>\nSDA &#8211; Digital 20<br \/>\nSCL &#8211; Digital 21<br \/>\nSW1 &#8211; Digital 2<br \/>\nMQ3 &#8211; Analog 0<br \/>\nLSB &#8211; Analog 1<br \/>\nVIN &#8211; +3.3V<br \/>\nVIN &#8211; +5V<br \/>\nGND &#8211; GND<\/p>\n<p>&#8212;&#8212;<\/p>\n<p><strong>DL2308Mk07p.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/****** Don Luc Electronics \u00a9 ******\r\nSoftware Version Information\r\nProject #28 - Sensors - SparkFun Line Sensor QRE1113 - Mk06\r\n28-06\r\nDL2308Mk07p.ino\r\n1 x Adafruit METRO M0 Express\r\n1 x DS3231 Precision RTC FeatherWing\r\n1 x Pololu MinIMU-9 v5 Gyro, Accelerometer, and Compass\r\n1 x Pololu Carrier for MQ Gas Sensors\r\n1 x Alcohol Gas Sensor - MQ-3\r\n1 x SparkFun Line Sensor - QRE1113\r\n1 x ProtoScrewShield\r\n1 x Rocker Switch - SPST\r\n2 x Resistor 10K Ohm\r\n1 x CR1220 3V Lithium Coin Cell Battery\r\n1 x SparkFun Cerberus USB Cable\r\n*\/\r\n\r\n\/\/ Include the Library Code\r\n\/\/ DS3231 Precision RTC \r\n#include &lt;RTClib.h&gt;\r\n\/\/ Two Wire Interface (TWI\/I2C)\r\n#include &lt;Wire.h&gt;\r\n\/\/ Keyboard\r\n#include &lt;Keyboard.h&gt;\r\n\/\/ Includes and variables for IMU integration\r\n\/\/ STMicroelectronics LSM6DS33 Gyroscope and Accelerometer\r\n#include &lt;LSM6.h&gt;\r\n\/\/ STMicroelectronics LIS3MDL Magnetometer\r\n#include &lt;LIS3MDL.h&gt;\r\n\r\n\/\/ Keyboard\r\nString sKeyboard = &quot;&quot;;\r\n\r\n\/\/ DS3231 Precision RTC \r\nRTC_DS3231 rtc;\r\nString dateRTC = &quot;&quot;;\r\nString timeRTC = &quot;&quot;;\r\n\r\n\/\/ Pololu 9DoF IMU\r\n\/\/ STMicroelectronics LSM6DS33 Gyroscope and Accelerometer\r\nLSM6 imu;\r\n\/\/ Accelerometer and Gyroscopes\r\n\/\/ Accelerometer\r\nint imuAX;\r\nint imuAY;\r\nint imuAZ;\r\n\/\/ Gyroscopes \r\nint imuGX;\r\nint imuGY;\r\nint imuGZ;\r\n\/\/ STMicroelectronics LIS3MDL Magnetometer\r\nLIS3MDL mag;\r\n\/\/ Magnetometer\r\nint magX;\r\nint magY;\r\nint magZ;\r\n\r\n\/\/ Gas Sensors MQ\r\n\/\/ Alcohol Gas Sensor - MQ-3\r\nint iMQ3 = A0;\r\nint iMQ3Raw = 0;\r\nint iMQ3ppm = 0;\r\n\r\n\/\/ SparkFun Line Sensor - QRE1113 (Analog)\r\nint iLine = A1;\r\nint iLineSensor = 0;\r\n\r\n\/\/ The number of the Rocker Switch pin\r\nint iSwitch = 2;\r\n\/\/ Variable for reading the button status\r\nint SwitchState = 0;\r\n\r\n\/\/ Software Version Information\r\nString sver = &quot;28-06&quot;;\r\n\r\nvoid loop() {\r\n\r\n  \/\/ Date and Time RTC\r\n  isRTC ();\r\n\r\n  \/\/ Pololu Accelerometer and Gyroscopes\r\n  isIMU();\r\n\r\n  \/\/ Pololu Magnetometer\r\n  isMag();\r\n\r\n  \/\/ Gas Sensors MQ\r\n  isGasSensor();\r\n\r\n  \/\/ SparkFun Line Sensor\r\n  isLineSensor();\r\n\r\n  \/\/ Read the state of the Switch value:\r\n  SwitchState = digitalRead(iSwitch);\r\n\r\n  \/\/ Check if the button is pressed. If it is, the SwitchState is HIGH:\r\n  if (SwitchState == HIGH) {\r\n\r\n     Keyboard.println(sKeyboard);\r\n    \r\n  }\r\n\r\n  \/\/ Delay 1 Second\r\n  delay(1000);\r\n\r\n}\r\n<\/pre>\n<p><strong>getAccelGyro.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ Accelerometer and Gyroscopes\r\n\/\/ Setup IMU\r\nvoid setupIMU() {\r\n\r\n  \/\/ Setup IMU\r\n  imu.init();\r\n  \/\/ Default\r\n  imu.enableDefault();\r\n  \r\n}\r\n\/\/ Accelerometer and Gyroscopes\r\nvoid isIMU() {\r\n\r\n  \/\/ Accelerometer and Gyroscopes\r\n  imu.read();\r\n  \/\/ Accelerometer x, y, z\r\n  imuAX = imu.a.x;\r\n  imuAY = imu.a.y;\r\n  imuAZ = imu.a.z;\r\n  \/\/ Gyroscopes x, y, z\r\n  imuGX = imu.g.x;\r\n  imuGY = imu.g.y;\r\n  imuGZ = imu.g.z;\r\n\r\n  \/\/ Keyboard\r\n  sKeyboard = sKeyboard + String(imuAX) + &quot;|&quot; + String(imuAY) + &quot;|&quot;\r\n  + String(imuAZ) + &quot;|&quot;;\r\n  sKeyboard = sKeyboard + String(imuGX) + &quot;|&quot; + String(imuGY) + &quot;|&quot;\r\n  + String(imuGZ) + &quot;|&quot;;\r\n  \r\n}\r\n<\/pre>\n<p><strong>getGasSensorMQ.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ Gas Sensors MQ\r\n\/\/ Gas Sensor\r\nvoid isGasSensor() {\r\n\r\n  \/\/ Read in analog value from each gas sensors\r\n  \/\/ Alcohol Gas Sensor - MQ-3\r\n  iMQ3ppm = isMQ3( iMQ3Raw );\r\n\r\n  \/\/ Keyboard\r\n  sKeyboard = sKeyboard + String(iMQ3ppm) + &quot;|&quot;;\r\n\r\n}\r\n\/\/ Alcohol Gas Sensor - MQ-3\r\nint isMQ3(double rawValue) {\r\n\r\n  double RvRo = rawValue;\r\n  \/\/ % BAC = breath mg\/L * 0.21\r\n  double bac = RvRo * 0.21;\r\n  return bac;\r\n  \r\n}\r\n<\/pre>\n<p><strong>getIMUMagnetometer.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ IMU Magnetometer\r\n\/\/ Setup Magnetometer\r\nvoid setupMag() {\r\n\r\n  \/\/ Setup Magnetometer\r\n  mag.init();\r\n  \/\/ Default\r\n  mag.enableDefault();\r\n  \r\n}\r\n\/\/ Magnetometer\r\nvoid isMag() {\r\n\r\n  \/\/ Magnetometer\r\n  mag.read();\r\n  \/\/ Magnetometer x, y, z\r\n  magX = mag.m.x;\r\n  magY = mag.m.y;\r\n  magZ = mag.m.z;\r\n\r\n  \/\/ Keyboard\r\n  sKeyboard = sKeyboard + String(magX) + &quot;|&quot; + String(magY) + &quot;|&quot; \r\n  + String(magZ) + &quot;|&quot;;\r\n  \r\n}\r\n<\/pre>\n<p><strong>getLineSensor.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ Line Sensor\r\n\/\/ isLine Sensor\r\nvoid isLineSensor(){\r\n\r\n  \/\/ Line Sensor\r\n  iLineSensor = analogRead(iLine);\r\n\r\n  \/\/ Keyboard\r\n  sKeyboard = sKeyboard + String(iLineSensor) + &quot;|*&quot;;\r\n  \r\n}\r\n<\/pre>\n<p><strong>getRTC.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ Date &amp; Time\r\n\/\/ DS3231 Precision RTC\r\nvoid setupRTC() {\r\n\r\n  \/\/ DS3231 Precision RTC\r\n  if (! rtc.begin()) {\r\n    \/\/Serial.println(&quot;Couldn&#039;t find RTC&quot;);\r\n    \/\/Serial.flush();\r\n    while (1) delay(10);\r\n  }\r\n\r\n  if (rtc.lostPower()) {\r\n    \/\/Serial.println(&quot;RTC lost power, let&#039;s set the time!&quot;);\r\n    \/\/ When time needs to be set on a new device, or after a power loss, the\r\n    \/\/ following line sets the RTC to the date &amp; time this sketch was compiled\r\n    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));\r\n    \/\/ This line sets the RTC with an explicit date &amp; time, for example to set\r\n    \/\/ January 21, 2014 at 3am you would call:\r\n    \/\/rtc.adjust(DateTime(2023, 8, 10, 11, 0, 0));\r\n  }\r\n  \r\n}\r\n\/\/ Date and Time RTC\r\nvoid isRTC () {\r\n\r\n  \/\/ Date and Time\r\n  dateRTC = &quot;&quot;;\r\n  timeRTC = &quot;&quot;;\r\n  DateTime now = rtc.now();\r\n  \r\n  \/\/ Date\r\n  dateRTC = now.year(), DEC; \r\n  dateRTC = dateRTC + &quot;\/&quot;;\r\n  dateRTC = dateRTC + now.month(), DEC;\r\n  dateRTC = dateRTC + &quot;\/&quot;;\r\n  dateRTC = dateRTC + now.day(), DEC;\r\n\r\n  \/\/ Time\r\n  timeRTC = now.hour(), DEC;\r\n  timeRTC = timeRTC + &quot;:&quot;;\r\n  timeRTC = timeRTC + now.minute(), DEC;\r\n  timeRTC = timeRTC + &quot;:&quot;;\r\n  timeRTC = timeRTC + now.second(), DEC;\r\n\r\n  \/\/ Keyboard\r\n  sKeyboard = &quot;SEN|&quot; + sver + &quot;|&quot; + String(dateRTC) + &quot;|&quot; + \r\n  String(timeRTC) + &quot;|&quot;;\r\n  \r\n}\r\n<\/pre>\n<p><strong>setup.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ Setup\r\nvoid setup()\r\n{\r\n  \r\n  \/\/ Give display time to power on\r\n  delay(100);\r\n  \r\n  \/\/ Wire - Inialize I2C Hardware\r\n  Wire.begin();\r\n\r\n  \/\/ Give display time to power on\r\n  delay(100);\r\n\r\n  \/\/ Date &amp; Time RTC\r\n  \/\/ DS3231 Precision RTC \r\n  setupRTC();\r\n  \r\n  \/\/ Initialize control over the keyboard:\r\n  Keyboard.begin();\r\n\r\n  \/\/ Pololu Setup IMU\r\n  setupIMU();\r\n\r\n  \/\/ Pololu Setup Magnetometer\r\n  setupMag();\r\n\r\n  \/\/ Initialize the Switch pin as an input\r\n  pinMode(iSwitch, INPUT);\r\n\r\n  \/\/ Initialize digital pin LED_BUILTIN as an output\r\n  pinMode(LED_BUILTIN, OUTPUT);\r\n  \/\/ Turn the LED on HIGH\r\n  digitalWrite(LED_BUILTIN, HIGH);\r\n\r\n  \/\/ Delay 5 Second\r\n  delay( 5000 );\r\n\r\n}\r\n<\/pre>\n<p>&#8212;&#8212;<\/p>\n<p><strong>People can contact us:<\/strong> https:\/\/www.donluc.com\/?page_id=1927<\/p>\n<p><strong>Technology Experience<\/strong><\/p>\n<ul>\n<li>Programming Language<\/li>\n<li>Single-Board Microcontrollers (PIC, Arduino, Raspberry Pi,Espressif, etc&#8230;)<\/li>\n<li>IoT<\/li>\n<li>Wireless (Radio Frequency, Bluetooth, WiFi, Etc&#8230;)<\/li>\n<li>Robotics<\/li>\n<li>Camera and Video Capture Receiver Stationary, Wheel\/Tank and Underwater Vehicle<\/li>\n<li>Unmanned Vehicles Terrestrial and Marine<\/li>\n<li>Machine Learning<\/li>\n<li>RTOS<\/li>\n<li>Research &#038; Development (R &#038; D)<\/li>\n<\/ul>\n<p><strong>Instructor, E-Mentor, STEAM, and Arts-Based Training<\/strong><\/p>\n<ul>\n<li>Programming Language<\/li>\n<li>IoT<\/li>\n<li>PIC Microcontrollers<\/li>\n<li>Arduino<\/li>\n<li>Raspberry Pi<\/li>\n<li>Espressif<\/li>\n<li>Robotics<\/li>\n<\/ul>\n<p><strong>Follow Us<\/strong><\/p>\n<p><strong>Luc Paquin \u2013 Curriculum Vitae &#8211; 2023<\/strong><br \/>\nhttps:\/\/www.donluc.com\/luc\/<\/p>\n<p><strong>Web:<\/strong> https:\/\/www.donluc.com\/<br \/>\n<strong>Facebook:<\/strong> https:\/\/www.facebook.com\/neosteam.labs.9\/<br \/>\n<strong>YouTube:<\/strong> https:\/\/www.youtube.com\/@thesass2063<br \/>\n<strong>Twitter:<\/strong> https:\/\/twitter.com\/labs_steam<br \/>\n<strong>Pinterest:<\/strong> https:\/\/www.pinterest.com\/NeoSteamLabs\/<br \/>\n<strong>Instagram:<\/strong> https:\/\/www.instagram.com\/neosteamlabs\/<\/p>\n<p><strong>Don Luc<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8212;&#8212; #DonLucElectronics #DonLuc #Sensors #LineSensor #AlcoholGasSensor #MinIMU9 #Pololu #Adafruit #SparkFun #Arduino #Project #Fritzing #Programming #Electronics #Microcontrollers #Consultant &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; SparkFun Line Sensor QRE1113 (Analog) This version of the QRE1113 breakout board features an easy-to-use analog output, which will vary depending on the amount of IR light reflected back to the sensor. This tiny &#8230; <a title=\"Project #28 &#8211; Sensors &#8211; SparkFun Line Sensor QRE1113 &#8211; Mk06\" class=\"read-more\" href=\"https:\/\/www.donluc.com\/?p=3697\" aria-label=\"Read more about Project #28 &#8211; Sensors &#8211; SparkFun Line Sensor QRE1113 &#8211; Mk06\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[294,47,50,38,59,5,46,287,58,10,43],"tags":[251,86,6,102,4,19,85,252,246,24,103,9,27,248,109,305,33,34,108],"class_list":["post-3697","post","type-post","status-publish","format-standard","hentry","category-sensors","category-adafruit","category-arduino","category-digitalelectronics","category-fritzing","category-microcontrollers","category-pololu","category-program","category-arduino-programming","category-projects","category-sparkfun","tag-accelerometer","tag-adafruit","tag-arduino","tag-components","tag-consultant","tag-electronics","tag-fritzing","tag-gyroscope","tag-magnetometer","tag-microcontroller","tag-pololu","tag-programming","tag-projects-2","tag-sensors","tag-sparkfun","tag-sparkfun-line-sensor-qre1113","tag-technology","tag-video-blog","tag-vlog"],"_links":{"self":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts\/3697","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3697"}],"version-history":[{"count":1,"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts\/3697\/revisions"}],"predecessor-version":[{"id":3702,"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts\/3697\/revisions\/3702"}],"wp:attachment":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3697"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3697"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3697"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}