کوڈ تلاش کریں

لیزر VL53L0X 6-پن ماجیول اور TM1637 ڈسپلے کے ساتھ Arduino کے لیے فاصلہ ناپنا

لیزر VL53L0X 6-پن ماجیول اور TM1637 ڈسپلے کے ساتھ Arduino کے لیے فاصلہ ناپنا


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

VL53L0X 200cm range sensor
TM1637 4 digit display module

ہم مطلوبہ ہارڈویئر، وائرنگ ہدایات، اور کوڈ کا جائزہ لیں گے جو سب کچھ چلانے کے لیے ضروری ہے۔ اس ٹیوٹوریل کے اختتام تک، آپ کے پاس ایک کام کرنے والا فاصلہ پیمائش کا آلہ ہوگا جو مختلف ایپلیکیشنز میں استعمال کیا جا سکتا ہے۔ بصری رہنمائی کے لیے، ویڈیو (ویڈیو میں 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 کو مناسب طریقے سے جوڑیں۔
  • غیر متوقع رویے سے بچنے کے لیے کوڈ میں ٹائم آؤٹ کو ہینڈل کریں۔
  • درستگی کے لیے آپریٹنگ درجہ حرارت کی رینج کا خیال رکھیں۔

وائرنگ ہدایات

Arduino wiring for VL53L0X with TM1637 4 digit dispaly
Arduino wiring for VL53L0X with TM1637 4 digit dispaly

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 پر)۔

عام مسائل میں الٹی وائرنگ یا سینسر کو صحیح طریقے سے انیشیالائز نہ کرنا شامل ہے، جو ٹائم آؤٹ خرابیوں کا باعث بن سکتا ہے۔ یقینی بنائیں کہ صحیح پن منسلک ہیں اور سینسر کو درست فاصلہ پیمائش کے لیے مناسب طور پر پاور فراہم کی گئی ہے۔

تصاویر

VL53L0X 200cm range sensor
VL53L0X 200cm range sensor
TM1637 4 digit display module
TM1637 4 digit display module
Arduino wiring for VL53L0X with TM1637 4 digit dispaly
Arduino wiring for VL53L0X with TM1637 4 digit dispaly
104-Measure distance with a Laser VL53L0X 6-pin module and a TM1637 LED display for Arduino
زبان: C++
/* 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);
}

وسائل اور حوالہ جات

ابھی تک کوئی وسائل نہیں۔

فائلیں📁

ڈیٹا شیٹ (پی ڈی ایف)

فریٹزنگ فائل

صارف کا دستی کتاب

دیگر فائلیں