RGB LED Indicator To Distance By VL53L0X


In this project, we will Learn How to make Rgb Led Indicator To Distance By VL53L0X, so basically the RGB LED to indicate the distance measured by VL53L0X time-of-flight sensor. The RGB LED will change its color according to the distance measured by the sensor. The closer the obstacle, the more intense the color will be.

Hardware Required

You will require the following Hardware Components for making Rgb Led Indicator To Distance By VL53L0X.

Components#Buy From Amazon
Arduino Nano1Buy Now
VL53L0X Distance Sensor1Buy Now
RGB LED (cathode)1Buy Now
Resistor 1K3Buy Now
Jumper WiresFewBuy Now
Breadboard1Buy Now

What is VL53L0X Distance Sensor?

The VL53L0X Distance Sensor is a module that integrates the VL53L0X ToF sensor with a microcontroller, power management unit, and communication interface. The module provides accurate distance measurements, ambient light sensing, and programmable interrupt output.


VL53L0X-Laser Distance-Sensor-Pinout

Pin Configuration

Pin NamePin Type
VCCIt is the voltage supply pin.
GNDIt is Ground Pin
SCLIt is the digital serial clock input pin.
SDAIt is a serial data digital input/output pin for communication.
GPIO1It is the programmable interrupt output pin.
XSHUTIt is an active-low shutdown input pin.


  1. Operating voltage: 2.8V to 5V
  2. Range: up to 2 meters
  3. Accuracy: ±3%
  4. Measurement rate: up to 60Hz
  5. Ambient light sensing range: 0.1 to 100,000 lux
  6. Communication interface: I2C


  1. Integrated laser emitter and detector
  2. Low power consumption
  3. Small form factor
  4. Interrupt output for range detection and ambient light sensing
  5. Programmable I2C address

Circuit Connections

The circuit connections for this project are straightforward. Connect the SDA and SCL pins of the VL53L0X sensor to A4 and A5 pins of the Arduino Nano respectively. and connect the vcc and Gnd to 5v and Gnd of Arduino Nano, and Connect the RGB LED’s common cathode pin to the GND pin of the Arduino Nano. Connect the red, green and blue pins of the RGB LED to digital pins 3, 5 and 6 of the Arduino Nano respectively. Use a 1K resistor in series with each of the red, green and blue pins of the RGB LED.

Circuit Diagram

The following circuit shows you the connection of the VL53L0X Multi Sensor with Arduino Please make the connection carefully


Working Explanation

The VL53L0X sensor sends a laser beam to the target object and measures the time taken for the laser to bounce back to the sensor. This time is used to calculate the distance of the object from the sensor. The Arduino Nano receives this distance data from the sensor and based on this data, it controls the RGB LED to change its color accordingly.

If the distance is less than a certain threshold, the LED will change to red indicating the obstacle is too close. and If the distance is between a certain range, the LED will change to yellow indicating the obstacle is closer. If the distance is greater than a certain range, the LED will change to green indicating the obstacle is far.

Installing Arduino IDE Software

First, you will require to Download the updated version of Arduino IDE Software and Install it on your PC or laptop. if you Learn How to install the Arduino step-by-step guide then click on how to install Arduino Button given Blow

Installing Libraries

Now when you are Ready to upload the code, to the Arduino Board you will need first to add the Following Libraries in Arduino, If you Learn How to add the library in the Arduino step-by-step guide click on how to install the library Button given Blow


//For more Projects: www.arduinocircuit.com

const int ledPinRed = 3; // Red LED connected to analogue out pin
const int ledPinGrn = 5; // Green LED connected to analogue out pin
const int ledPinBlu = 6; // Blue LED connected to analogue out pin
// Constants to define the ranges.

const int hueRedLow = 0;
const int hueRedHigh = 255;
const int hueBlue = 170;
const int angleMin = 0;
const int angleSector = 1;
const int angleMax = 360;

const int brightMin = 0;
const int brightMax = 255;

int potValueHue;

int hue, brightness;

const int saturation = 255;
unsigned int r, g, b;
#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;
void setup() {
// Still need to set a baud rate, even for USB.


// Set LED pins to output.
pinMode(ledPinRed, OUTPUT);
pinMode(ledPinGrn, OUTPUT);
pinMode(ledPinBlu, OUTPUT);


void loop() {
potValueHue = map(sensor.readRangeContinuousMillimeters(), 1000, 0, 0, 360);

hue = constrain(map(potValueHue, angleSector, angleMax – angleSector, hueRedLow, hueBlue), hueRedLow, hueBlue);
brightness = constrain(map(potValueHue, angleMin, angleSector, brightMin, brightMax), brightMin, brightMax);

brightness = brightness – constrain(map(potValueHue, angleMax – angleSector, angleMax, brightMin, brightMax), brightMin, brightMax);

// Do the conversion.
HSBToRGB(hue, saturation, brightness, &r, &g, &b);

analogWrite(ledPinRed, r);
analogWrite(ledPinGrn, g);
analogWrite(ledPinBlu, b);

Serial.print(” bright=”);
Serial.print(” hue=”);
Serial.print(” red=”);
Serial.print(” green=”);
Serial.print(” blue=”);

void HSBToRGB(
unsigned int inHue, unsigned int inSaturation, unsigned int inBrightness,
unsigned int *oR, unsigned int *oG, unsigned int *oB )
if (inSaturation == 0)
// achromatic (grey)
*oR = *oG = *oB = inBrightness;
unsigned int scaledHue = (inHue * 6);
unsigned int sector = scaledHue >> 8; // sector 0 to 5 around the color wheel
unsigned int offsetInSector = scaledHue – (sector << 8); // position within the sector
unsigned int p = (inBrightness * ( 255 – inSaturation )) >> 8;
unsigned int q = (inBrightness * ( 255 – ((inSaturation * offsetInSector) >> 8) )) >> 8;
unsigned int t = (inBrightness * ( 255 – ((inSaturation * ( 255 – offsetInSector )) >> 8) )) >> 8;
switch( sector ) {
case 0:
*oR = inBrightness;
*oG = t;
*oB = p;
case 1:
*oR = q;
*oG = inBrightness;
*oB = p;
case 2:
*oR = p;
*oG = inBrightness;
*oB = t;
case 3:
*oR = p;
*oG = q;
*oB = inBrightness;
case 4:
*oR = t;
*oG = p;
*oB = inBrightness;
default: // case 5:
*oR = inBrightness;
*oG = p;
*oB = q;


  1. Obstacle detection and avoidance in robots and drones.
  2. Proximity sensing for automatic doors.
  3. Distance monitoring in security systems.
  4. Level monitoring in tanks and containers.
  5. Parking assistance systems in vehicles.


The RGB LED indicator to distance project is a simple and effective way to demonstrate the distance sensing capabilities of the VL53L0X sensor. By changing the color of the RGB LED based on the distance measured by the sensor, it becomes easier to visualize the distance and take necessary actions accordingly. This project can be easily extended to various applications in robotics, automation, and security systems.

Leave a Comment