Hi sir, I have already resolved the issue. Please use the test code below, you can measure below 70mm using VLl53L4CD ToF SENSOR
Actually ,this example code from ST Electronics
/* Includes ------------------------------------------------------------------*/
#include <Arduino.h>
#include <Wire.h>
#include <vl53l4cd_class.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#include <assert.h>
#include <stdlib.h>
#define DEV_I2C Wire
#define SerialPort Serial
#ifndef LED_BUILTIN
#define LED_BUILTIN 13
#endif
#define LedPin LED_BUILTIN
/* Please uncomment the line below if you want also to use the satellites */
//#define SATELLITES_MOUNTED
#define XSHUT_TOP 3
#ifdef SATELLITES_MOUNTED
#define XSHUT_LEFT 6
#define XSHUT_RIGHT 4
#endif
// Components.
VL53L4CD sensor_vl53l4cd_top(&DEV_I2C, XSHUT_TOP);
#ifdef SATELLITES_MOUNTED
VL53L4CD sensor_vl53l4cd_left(&DEV_I2C, XSHUT_LEFT);
VL53L4CD sensor_vl53l4cd_right(&DEV_I2C, XSHUT_RIGHT);
#endif
/* Setup ---------------------------------------------------------------------*/
void setup()
{
// Led.
pinMode(LedPin, OUTPUT);
// Initialize serial for output.
SerialPort.begin(115200);
SerialPort.println("Starting...");
// Initialize I2C bus.
DEV_I2C.begin();
// Configure VL53L4CD top component.
sensor_vl53l4cd_top.begin();
// Switch off VL53L4CD top component.
sensor_vl53l4cd_top.VL53L4CD_Off();
#ifdef SATELLITES_MOUNTED
// Configure (if present) VL53L4CD left component.
sensor_vl53l4cd_left.begin();
//Switch off (if present) VL53L4CD left component.
sensor_vl53l4cd_left.VL53L4CD_Off();
// Configure (if present) VL53L4CD right component.
sensor_vl53l4cd_right.begin();
// Switch off (if present) VL53L4CD right component.
sensor_vl53l4cd_right.VL53L4CD_Off();
#endif
//Initialize all the sensors
sensor_vl53l4cd_top.InitSensor(0x10);
#ifdef SATELLITES_MOUNTED
sensor_vl53l4cd_left.InitSensor(0x12);
sensor_vl53l4cd_right.InitSensor(0x14);
#endif
// Start Measurements
sensor_vl53l4cd_top.VL53L4CD_SetRangeTiming(200, 0);
sensor_vl53l4cd_top.VL53L4CD_StartRanging();
#ifdef SATELLITES_MOUNTED
sensor_vl53l4cd_left.VL53L4CD_SetRangeTiming(200, 0);
sensor_vl53l4cd_left.VL53L4CD_StartRanging();
sensor_vl53l4cd_right.VL53L4CD_SetRangeTiming(200, 0);
sensor_vl53l4cd_right.VL53L4CD_StartRanging();
#endif
}
void loop()
{
VL53L4CD_Result_t results;
uint8_t NewDataReady = 0;
char report[128];
uint8_t status;
do {
status = sensor_vl53l4cd_top.VL53L4CD_CheckForDataReady(&NewDataReady);
} while (!NewDataReady);
//Led on
digitalWrite(LedPin, HIGH);
if ((!status) && (NewDataReady != 0)) {
// (Mandatory) Clear HW interrupt to restart measurements
sensor_vl53l4cd_top.VL53L4CD_ClearInterrupt();
// Read measured distance. RangeStatus = 0 means valid data
sensor_vl53l4cd_top.VL53L4CD_GetResult(&results);
snprintf(report, sizeof(report), "VL53L4CD Top: Status = %3u, Distance = %5u mm, Signal = %6u kcps/spad\r\n",
results.range_status,
results.distance_mm,
results.signal_per_spad_kcps);
SerialPort.print(report);
}
digitalWrite(LedPin, LOW);
#ifdef SATELLITES_MOUNTED
NewDataReady = 0;
do {
status = sensor_vl53l4cd_left.VL53L4CD_CheckForDataReady(&NewDataReady);
} while (!NewDataReady);
//Led on
digitalWrite(LedPin, HIGH);
if ((!status) && (NewDataReady != 0)) {
// (Mandatory) Clear HW interrupt to restart measurements
sensor_vl53l4cd_left.VL53L4CD_ClearInterrupt();
// Read measured distance. RangeStatus = 0 means valid data
sensor_vl53l4cd_left.VL53L4CD_GetResult(&results);
snprintf(report, sizeof(report), "VL53L4CD Left: Status = %3u, Distance = %5u mm, Signal = %6u kcps/spad\r\n",
results.range_status,
results.distance_mm,
results.signal_per_spad_kcps);
SerialPort.print(report);
}
digitalWrite(LedPin, LOW);
NewDataReady = 0;
do {
status = sensor_vl53l4cd_right.VL53L4CD_CheckForDataReady(&NewDataReady);
} while (!NewDataReady);
//Led on
digitalWrite(LedPin, HIGH);
if ((!status) && (NewDataReady != 0)) {
// (Mandatory) Clear HW interrupt to restart measurements
sensor_vl53l4cd_right.VL53L4CD_ClearInterrupt();
// Read measured distance. RangeStatus = 0 means valid data
sensor_vl53l4cd_right.VL53L4CD_GetResult(&results);
snprintf(report, sizeof(report), "VL53L4CD Right: Status = %3u, Distance = %5u mm, Signal = %6u kcps/spad\r\n",
results.range_status,
results.distance_mm,
results.signal_per_spad_kcps);
SerialPort.print(report);
}
digitalWrite(LedPin, LOW);
#endif
}