VL53L0X sensor not working

I connected VCC TO 5V, GND TO GND, SCL TO A5, SDA TO A4.

NO OTHER PINS CONNECTED.

'/* This example shows how to use continuous mode to take
range measurements with the 6 pin VL53L0X module. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.

The range readings are in units of mm.

Original source: GitHub - adafruit/Adafruit_VL53L0X: Arduino library for Adafruit VL53L0X
Modified by Ahmad Shamshiri for RoboJax.com
Date modified: May 31, 2018 at 19:25 at Ajax, Ontario, Canada
Watch the instruciton video for this code Lesson 77: Measure Distance with VL53L0X 6 pin Laser module with Arduino - YouTube

Pin connection
VL53L0X Pin Arduino Pin
VCC 5V
GND GND
SDA A4 or SDA if available
SCL A5 or SCL if available
GPIO1 leave it unconnected
XSHUT D12 (digital 12 or pin 12)
*/

#include <Wire.h>
#include <VL53L0X.h>
int n=1;
int k=0;
float distancef= 180;
int distancesumi1=0;
int distancesumi2=0;
int distancesumi3=0;
int distancesumi4=0;
int distancesumi5=0;

int cushion=50;

int distancei5;
int distancei4;
int distancei3;
int distancei2;
int distancei1;

VL53L0X sensor;

void setup()
{
pinMode(12,INPUT_PULLUP);
digitalWrite(12,HIGH);
Serial.begin(9600);
Wire.begin();

sensor.init();
sensor.setTimeout(500);

// Start continuous back-to-back mode (take readings as
// fast as possible). To use continuous timed mode
// instead, provide a desired inter-measurement period in
// ms (e.g. sensor.startContinuous(100)).
sensor.startContinuous(10);
Serial.print ("void setup");
}

void loop()
{
// store previous loop data//

distancesumi5=distancesumi4;
distancesumi4=distancesumi3;
distancesumi3=distancesumi2;
distancesumi2=distancesumi1;

/* test print

Serial.print (distancei1);
Serial.print (";");
Serial.print (distancei2);
Serial.print (";");
Serial.print (distancei3);
Serial.print (";");
Serial.print (distancei4);
Serial.print (";");
*/

//store previous loop data//

distancei5=distancei4;
distancei4=distancei3;
distancei3=distancei2;
distancei2=distancei1;

delay(500);
int distance1 =sensor.readRangeContinuousMillimeters();
delay(50);
int distance2 =sensor.readRangeContinuousMillimeters();
delay(50);
int distance3 =sensor.readRangeContinuousMillimeters();
delay(50);
int distance4 =sensor.readRangeContinuousMillimeters();
delay(50);
int distance5 =sensor.readRangeContinuousMillimeters();
delay(50);
int distance6 =sensor.readRangeContinuousMillimeters();
delay(50);
int distance7 =sensor.readRangeContinuousMillimeters();
delay(50);
int distance8 =sensor.readRangeContinuousMillimeters();
delay(50);
int distance9 =sensor.readRangeContinuousMillimeters();
delay(50);
int distance10 =sensor.readRangeContinuousMillimeters();
delay(50);

/*
Serial.print("loop:");
Serial.print(n );
Serial.print("Pre Dist: ");
Serial.print(distancef );
Serial.print("mm");
*/

float distancesumf =((distance1)+(distance2 )+(distance3)+(distance4)+(distance5)+(distance6)+(distance7)+(distance8)+(distance9)+(distance10)+((distancef)*10));
distancef= (distancesumf/20);

distancesumi1= distancesumf+0.5;
distancei1= distancef+0.5;

int correction=(distancei2 - distancei1);

if (distancesumi5 > distancesumi1+cushion)
{
Serial.print("decreasing; ") ;
k=1;

}
else if (distancesumi5+cushion < distancesumi1)
{
Serial.print("increasing; ") ;
k=3;
}
else
{
Serial.print("Same dist; ") ;
k=2;
}

//distance = distance;
Serial.print("Distance: ");
Serial.print(distancei1);
Serial.print("mm;");
Serial.print(correction);
//if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
n=n+1;
Serial.println();
//analogWrite(3,distancei1);
//delay(1000);
} '

BUT device is not resulting proper data. I had used this same sensor and code year back and was running perfectly.

Is it a address issue?

Thanks in advance for any help.

what is displayed on the serial monitor?
if you run the i2c_scanner what does it display?

"I2"

If reset button pressed, "I2C" is added in same line with each press.

Hi, @rajuser09
Welcome to the forum.

Can you please post a copy of your circuit, a picture of a hand drawn circuit in jpg, png?
Hand drawn and photographed is perfectly acceptable.
Please include ALL hardware, power supplies, component names and pin labels.

What model Arduino are you using?

Have you tired the EXAMPLE codes that come with the library?

#include "Adafruit_VL53L0X.h"

Adafruit_VL53L0X lox = Adafruit_VL53L0X();

void setup() {
  Serial.begin(115200);

  // wait until serial port opens for native USB devices
  while (! Serial) {
    delay(1);
  }

  Serial.println("Adafruit VL53L0X test.");
  if (!lox.begin()) {
    Serial.println(F("Failed to boot VL53L0X"));
    while(1);
  }
  // power
  Serial.println(F("VL53L0X API Continuous Ranging example\n\n"));

  // start continuous ranging
  lox.startRangeContinuous();
}

void loop() {
  if (lox.isRangeComplete()) {
    Serial.print("Distance in mm: ");
    Serial.println(lox.readRange());
  }
}

Remember to set your IDE monitor speed to 115200 baud.

Tom.. :smiley: :+1: :coffee: :australia:

using a ESP32 if I run File>Examples>Adafruit_ VL53L0X>VL53L0X_continuous the serial monitor displays

Adafruit VL53L0X test.
VL53L0X API Continuous Ranging example


Distance in mm: 306
Distance in mm: 313
Distance in mm: 304
Distance in mm: 304
Distance in mm: 307
Distance in mm: 307
Distance in mm: 307
Distance in mm: 312
Distance in mm: 309
Distance in mm: 309
Distance in mm: 306

the target is approximatly 30cm from the sensor

Edit: UNO gives similar results, e.g.

mm  reading
50	51
50	49
50	50
100	96
100	99
100	97
150	145
150	147
150	149
200	202
200	200
200	202
250	251
250	253
250	256
300	305
300	307
300	302



wirings:
VL53L0X: VCC TO Arduino: 5V
VL53L0X: GND TO Arduino: GND
VL53L0X: SDA TO Arduino: A4
VL53L0X: SCL TO Arduino: A5

Wirings double checked and perfectly as per the above.

Hi, @rajuser09

Did you try the code I posted in post #4.

Did you write any code that just did a simple test of the sensor before writing your full code?

Have you got a DMM to check the Vcc voltage at the sensor?

Can you post a link to where you purchased the sensor?

Thanks.. Tom... :smiley: :+1: :coffee: :australia:

are you sure you are in the correct mode, see https://img.banggood.com/file/products/20180830020532SKU645408.pdf
the default is serial UART

Tom.. :smiley: :+1: :coffee: :australia:

Running perfect with Ps connected to GND. Thanks.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.