لیزر VL53L0X 6-پن ماجیول اور TM1637 ڈسپلے کے ساتھ Arduino کے لیے فاصلہ ناپنا
اس ٹیوٹوریل میں، ہم VL53L0X لیزر فاصلہ سینسر کا استعمال کرتے ہوئے فاصلہ ناپنا اور TM1637 7-سیگمنٹ ڈسپلے پر ریڈنگ دکھانا سیکھیں گے۔ یہ پروجیکٹ دونوں اجزاء کو ملا کر ایک سادہ مگر موثر فاصلہ پیمائش کا آلہ بناتا ہے۔ VL53L0X لیزر ٹیکنالوجی استعمال کرتا ہے تاکہ درست فاصلہ ریڈنگ فراہم کر سکے، جبکہ TM1637 ڈسپلے ان ریڈنگز کو صارف کے لیے آسان شکل میں دکھاتا ہے۔


ہم مطلوبہ ہارڈویئر، وائرنگ ہدایات، اور کوڈ کا جائزہ لیں گے جو سب کچھ چلانے کے لیے ضروری ہے۔ اس ٹیوٹوریل کے اختتام تک، آپ کے پاس ایک کام کرنے والا فاصلہ پیمائش کا آلہ ہوگا جو مختلف ایپلیکیشنز میں استعمال کیا جا سکتا ہے۔ بصری رہنمائی کے لیے، ویڈیو (ویڈیو میں 00:00 پر) ضرور دیکھیں۔
ہارڈویئر کی وضاحت
اس پروجیکٹ کے بنیادی اجزاء VL53L0X لیزر فاصلہ سینسر اور TM1637 ڈسپلے ماجیول ہیں۔ VL53L0X ایک ٹائم-آف-فلائٹ سینسر ہے جو لیزر بیم خارج کرکے اور اس کی عکاسی کے واپس آنے میں لگنے والے وقت کا حساب لگا کر کسی چیز کا فاصلہ ناپتا ہے۔ یہ 2.6V سے 3.5V کی وولٹیج رینج پر کام کرتا ہے لیکن مربوط وولٹیج ریگولیٹر کی بدولت 5V پر بھی کام کر سکتا ہے۔
TM1637 ایک ڈسپلے ڈرائیور ہے جو 7-سیگمنٹ LED ڈسپلے کو کنٹرول کرتا ہے۔ یہ ایک سادہ 2-وائر انٹرفیس (CLK اور DIO) پر بات چیت کرتا ہے، جس سے اسے Arduino سے جوڑنا آسان ہو جاتا ہے۔ ڈسپلے عددی اقدار دکھا سکتا ہے اور VL53L0X سینسر سے فاصلہ پیمائش دکھانے کے لیے بہترین ہے۔
ڈیٹاشیٹ تفصیلات
| مینوفیکچرر | STMicroelectronics |
|---|---|
| پارٹ نمبر | VL53L0X |
| لاجک/IO وولٹیج | 2.6 V - 3.5 V |
| سپلائی وولٹیج | 2.6 V - 5 V |
| آپریٹنگ درجہ حرارت | -20 °C سے 70 °C |
| پیمائش کی رینج | 30 mm سے 2000 mm |
| I2C فریکوئنسی | 400 kHz |
| ٹائم آؤٹ سیٹنگ | 500 ms |
| پیکیج | 6-پن ماجیول |
- مناسب پاور سپلائی یقینی بنائیں (5V قابل قبول ہے)۔
- لیکیج سے بچنے کے لیے XSHUT پن کو پل-اپ ریزسٹر کے ساتھ جوڑیں۔
- مواصلات کے لیے I2C استعمال کریں؛ SDA اور SCL کو مناسب طریقے سے جوڑیں۔
- غیر متوقع رویے سے بچنے کے لیے کوڈ میں ٹائم آؤٹ کو ہینڈل کریں۔
- درستگی کے لیے آپریٹنگ درجہ حرارت کی رینج کا خیال رکھیں۔
وائرنگ ہدایات

VL53L0X اور TM1637 ڈسپلے کو وائر کرنے کے لیے، VL53L0X کے VCC پن کو Arduino کے 5V پن سے اور GND پن کو Arduino کے گراؤنڈ پن سے جوڑ کر شروع کریں۔ اگلا، VL53L0X کے SDA پن کو Arduino کے A4 پن سے جوڑیں، جو عام طور پر I2C ڈیٹا مواصلات کے لیے استعمال ہوتا ہے۔ SCL پن کو Arduino کے A5 پن سے جوڑا جانا چاہیے، جو کلاک سگنل کے لیے استعمال ہوتا ہے۔
TM1637 ڈسپلے کے لیے، CLK پن کو Arduino کے ڈیجیٹل پن 2 سے اور DIO پن کو ڈیجیٹل پن 3 سے جوڑیں۔ آخر میں، VL53L0X کے XSHUT پن کو Arduino کے ڈیجیٹل پن 12 سے جوڑیں۔ یقینی بنائیں کہ کوئی بھی غیر استعمال شدہ پن، جیسے VL53L0X کا GPIO1، منسلک نہ رہے۔ یہ سیٹ اپ Arduino کو سینسر اور ڈسپلے دونوں کے ساتھ مؤثر طریقے سے بات چیت کرنے کی اجازت دے گا۔
کوڈ مثالیں اور واک تھرو
کوڈ سینسر اور ڈسپلے کو انیشیالائز کرتا ہے، I2C مواصلات قائم کرتا ہے، اور مسلسل فاصلہ پیمائش پڑھتا ہے۔ نیچے سیٹ اپ فنکشن کا ایک ٹکڑا ہے جہاں پن کنفیگر کیے جاتے ہیں اور سینسر انیشیالائز کیا جاتا ہے:
void setup() {
pinMode(12, INPUT_PULLUP); // پن 12 کو ان پٹ کے لیے سیٹ کریں
digitalWrite(12, HIGH); // پن 12 کو ہائی (5V) سیٹ کریں
Serial.begin(9600);
Wire.begin(); // I2C مواصلات شروع کیا گیا
sensor.init(); // فاصلہ سینسر انیشیالائز کیا گیا
sensor.setTimeout(500); // ٹائم آؤٹ سیٹ کیا گیا
sensor.startContinuous(); // پیمائش کی قسم سیٹ کی گئی
}
اس سیٹ اپ فنکشن میں، XSHUT کے لیے پن کو پل-اپ ریزسٹر کے ساتھ ان پٹ کے طور پر کنفیگر کیا گیا ہے، اور سینسر کو مسلسل رینج پیمائش کے لیے انیشیالائز کیا گیا ہے۔ سیریل مانیٹر بھی فاصلہ ریڈنگ دکھانے کے لیے سیٹ کیا گیا ہے۔
اگلا، مین لوپ فاصلہ پڑھتا ہے اور ڈسپلے کو اپڈیٹ کرتا ہے۔ یہاں لوپ فنکشن سے ایک مرکوز اقتباس ہے:
void loop() {
int distance = sensor.readRangeContinuousMillimeters(); // فاصلہ ملی میٹر میں پڑھیں
display.setSegments(clearLED); // LED ڈسپلے سے پچھلی قدر ہٹائیں
display.showNumberDec(distance, false, 4, 0); // فاصلہ دکھائیں
Serial.print("Distance: ");
Serial.print(distance); // سیریل مانیٹر پر فاصلہ پرنٹ کریں
}
یہ لوپ مسلسل سینسر سے فاصلہ پڑھتا ہے اور TM1637 ڈسپلے کو تازہ ترین پیمائش کے ساتھ اپڈیٹ کرتا ہے۔ یہ ڈیبگنگ کے مقاصد کے لیے فاصلہ سیریل مانیٹر پر بھی پرنٹ کرتا ہے۔ اگر آپ مکمل کوڈ دیکھنا چاہتے ہیں، تو یہ مضمون کے نیچے لوڈ ہوگا۔
ڈیمونسٹریشن / کیا توقع کریں
سیٹ اپ مکمل کرنے اور کوڈ اپ لوڈ کرنے کے بعد، آپ کو VL53L0X کے ذریعے ناپا گیا فاصلہ TM1637 پر دکھائی دینا چاہیے۔ جیسے ہی آپ کسی چیز کو سینسر کے قریب یا دور لے جائیں گے، دکھائی جانے والی قدر اسی مناسبت سے بدلے گی۔ اگر آپ کو کوئی غیر متوقع ریڈنگ ملے تو یقینی بنائیں کہ سینسر بلا روک ٹوک ہے اور چیز کی سطح لیزر عکاسی کے لیے موزوں ہے (ویڈیو میں 09:30 پر)۔
عام مسائل میں الٹی وائرنگ یا سینسر کو صحیح طریقے سے انیشیالائز نہ کرنا شامل ہے، جو ٹائم آؤٹ خرابیوں کا باعث بن سکتا ہے۔ یقینی بنائیں کہ صحیح پن منسلک ہیں اور سینسر کو درست فاصلہ پیمائش کے لیے مناسب طور پر پاور فراہم کی گئی ہے۔
/* This example shows how to use continuous mode to take readings.
This is Arduino code to measure distance with VL53L0X and display it on a TM1637 LED 7-segment display.
Original Laser Sensor source: https://github.com/adafruit/Adafruit_VL53L0X
Modified by Ahmad Shamshiri for RoboJax.com
Date modified: May 31, 2018 at 19:25 in Ajax, Ontario, Canada
You have to watch 1 video before using this code:
1- Watch VL53L0X video and get code https://youtu.be/1n9eJ9HaYpE
2- Watch TM1637 video and get code https://robojax.com?vid=robojax-TM1637
You can get this code from Robojax.com
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>
VL53L0X sensor;
/////// start of TM1637 Display
#include <Arduino.h>
#include <TM1637Display.h>
#define CLK 2
#define DIO 3
#define TEST_DELAY 500
TM1637Display display(CLK, DIO);
uint8_t clearLED[] = { 0x0, 0x0, 0x0, 0x0 }; // value for clearing the LEDs
////// End of TM1637 Display
void setup()
{
pinMode(12,INPUT_PULLUP);// set pin 12 for input
digitalWrite(12,HIGH);// set pin 12 high (5V)
Serial.begin(9600);
Wire.begin();// I2C communication initialized
sensor.init();// distance sensor is initialized
sensor.setTimeout(500); // time out is set
// 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();// type of measurement is set
Serial.println("VL53L0X with MAX6675 test");
delay(500);
display.setBrightness(0x0f);// set brightness for display
}
void loop()
{
int distance =sensor.readRangeContinuousMillimeters();// read the distance in mm
display.setSegments(clearLED);// remove previous value from LED display
display.showNumberDec(distance, false, 4, 0);// display the distance
//distance = distance;
Serial.print("Distance: ");
Serial.print(distance);// print distance on serial monitor
Serial.print("mm");
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
delay(100);
}
وسائل اور حوالہ جات
ابھی تک کوئی وسائل نہیں۔
فائلیں📁
ڈیٹا شیٹ (پی ڈی ایف)
-
TM1637 ڈیٹا شیٹ
/download/datasheet/robojax_TM1637_datasheet.pdf0.67 MB
فریٹزنگ فائل
-
TM1637 سیون سیگمنٹ ماجیول
TM1637.fzpz0.01 MB -
TM1637 4 ہندسوں کا سیون سیگمنٹ ڈسپلے
TM1637-1.fzpz0.01 MB -
Adafruit VL6180X ٹائم آف فلائٹ ڈسٹنس سینسرAdafruit VL6180X ٹائم آف فلائٹ ڈسٹنس سینسر کے لیے فریٹزنگ پارٹ۔ یہ سینسر 100mm تک مطلق فاصلہ اور محیط روشنی کی پیمائش کرتا ہے، I2C کے ذریعے مواصلت کرتا ہے۔ فریٹزنگ پروجیکٹس میں استعمال کے لیے سینسر بریک آؤٹ بورڈ اور پن کنکشن شامل ہے۔
Adafruit VL6180X Time of Flight Distance Sensor-1.fzpz0.02 MB
صارف کا دستی کتاب
-
TM1637 ڈسپلے دستی
robojax-TM1637_display_manual.pdf0.31 MB
دیگر فائلیں
-
پولاؤ VL53L0X لائبریری
robojax-VL53L0X-polou-arduino-master.zip0.02 MB -
VL53L0X_Distance_sensor_purple
VL53L0X_Distance_sensor_purple.fzpz0.01 MB