کوڈ تلاش کریں

سبق 20/31: الٹراسونک فاصلہ LCD1602 پر ظاہر کرنا

سبق 20/31: الٹراسونک فاصلہ LCD1602 پر ظاہر کرنا

یہ پروجیکٹ ظاہر کرتا ہے کہ کس طرح HC-SR04 الٹراسونک فاصلہ سینسر کو I2C-فعال LCD1602 ڈسپلے کے ساتھ ملا کر ایک حقیقی وقت کی فاصلہ پیمائش کا نظام بنایا جائے۔ اس گائیڈ کے اختتام تک، آپ کے پاس ایک کام کرنے والا آلہ ہوگا جو مسلسل کسی چیز کے فاصلے کو سینٹی میٹر میں ناپ کر دکھائے گا۔ یہ Arduino الیکٹرانکس میں ایک بنیادی مہارت ہے، کیونکہ یہ سینسر ان پٹ کو بصری آؤٹ پٹ کے ساتھ جوڑتا ہے۔

سن فاؤنڈر 20-LCD1602-الٹراسونک

یہ عملی سیٹ اپ مختلف حقیقی دنیا کی ایپلیکیشنز میں استعمال کیا جا سکتا ہے، بشمول:

  • ایک ذہین پارکنگ معاون بنانا جو دیوار یا کسی دوسری گاڑی کے فاصلے کا اندازہ لگانے میں مدد کرتا ہے۔
  • ٹینک کے لیے ایک سادہ مائع سطح مانیٹر بنانا جو اوپر سے سطح تک کے فاصلے کی پیمائش کرتا ہے۔
  • ایک خودکار ہینڈ سینیٹائزر ڈسپنسر یا ایک بغیر چھوئے کوڑے دان کا ڈبہ تیار کرنا جو کسی چیز کے قریب آنے پر کھلتا ہے۔
  • ایک بنیادی سیکیورٹی الارم بنانا جو کسی مخصوص زون میں کسی کے داخل ہونے پر چالو ہو جاتا ہے۔

ہارڈویئر اور اجزاء

اس پروجیکٹ کو بنانے کے لیے، آپ کو درج ذیل اجزاء کی ضرورت ہوگی:

  • Arduino بورڈ (مثلاً، Uno)
  • I2C انٹرفیس ماجیول کے ساتھ LCD1602 ڈسپلے
  • HC-SR04 الٹراسونک فاصلہ سینسر
  • جمپر تار
  • بریڈ بورڈ (اختیاری، آسان کنکشن کے لیے)

LCD1602 اور I2C کو سمجھنا

LCD1602 ایک مقبول ڈسپلے ہے جو دو لائنوں میں فی لائن 16 حروف دکھانے کی صلاحیت رکھتا ہے۔ اس کی پشت پر موجود "I2C" ماجیول ایک اہم فائدہ ہے کیونکہ یہ ڈسپلے کو کنٹرول کرنے کے لیے درکار پنوں کی تعداد کو 6 یا اس سے زیادہ سے کم کر کے صرف 2 مواصلاتی (SDA اور SCL) اور 2 پاور (VCC اور GND) تک لے آتا ہے۔ یہ آسانی وائرنگ کو بہت صاف ستھرا بناتی ہے اور آپ کے Arduino پر قیمتی ڈیجیٹل پنوں کو دوسرے سینسرز کے لیے آزاد کرتی ہے، جیسے اس پروجیکٹ میں استعمال ہونے والا الٹراسونک سینسر۔ (ویڈیو میں 01:30 پر)

I2C ماجیول میں ڈسپلے کے کنٹراسٹ کو ایڈجسٹ کرنے کے لیے ایک چھوٹا پوٹینشیومیٹر بھی ہوتا ہے۔ اگر آپ ڈسپلے کو پاور کرتے ہیں اور کچھ نظر نہیں آتا ہے، تو اس اسکرو کو اس وقت تک گھمانے کی کوشش کریں جب تک کہ متن نظر نہ آئے۔ (ویڈیو میں 02:47 پر)

وائرنگ گائیڈ

LCD1602_وائرنگ_الٹراسونک_بی بی

اجزاء کو جوڑنا سیدھا ہے۔ LCD کے I2C ماجیول میں چار پن ہیں جنہیں Arduino سے جوڑنے کی ضرورت ہے۔ الٹراسونک سینسر کے لیے، اس میں بھی چار پن ہیں۔

کنکشنز کی تفصیل یہ ہے:

LCD1602 I2C ماجیول سے Arduino:

  • GND کو Arduino کے GND سے
  • VCC کو Arduino کے 5V سے
  • SDA کو Arduino کے A4 سے
  • SCL کو Arduino کے A5 سے

HC-SR04 الٹراسونک سینسر سے Arduino:

  • VCC کو Arduino کے 5V سے
  • Trig کو Arduino کے ڈیجیٹل پن 12 سے
  • Echo کو Arduino کے ڈیجیٹل پن 11 سے
  • GND کو Arduino کے GND سے

اس پروجیکٹ کا وائرنگ ڈایاگرام ویڈیو میں حوالہ دیا گیا ہے۔

مطلوبہ لائبریریز انسٹال کرنا

یہ پروجیکٹ دو اہم لائبریریوں پر انحصار کرتا ہے۔ پہلی، LiquidCrystal_I2C، LCD کو کنٹرول کرنے کے لیے ضروری ہے اور یہ Arduino IDE کے ساتھ بطور ڈیفالٹ شامل نہیں ہے۔ آپ اسے ویڈیو کی تفصیل میں دیے گئے لنک سے یا Robojax ویب سائٹ سے ڈاؤن لوڈ کر سکتے ہیں۔ (ویڈیو میں 06:16 پر)

دوسری لائبریری، NewPing، الٹراسونک سینسر کے ساتھ انٹرفیس کرنے کے لیے استعمال ہوتی ہے۔ یہ پنگ بھیجنے اور ایکو ٹائم پڑھنے کے عمل کو آسان بناتی ہے۔ دونوں لائبریریز Arduino IDE کے لائبریری مینیجر کے ذریعے Sketch -> Include Library -> Manage Libraries پر جا کر اور ان کے نام تلاش کر کے انسٹال کی جا سکتی ہیں۔

کوڈ کی وضاحت

یہ اسکیچ LCD اور الٹراسونک سینسر کی فعالیت کو یکجا کرتا ہے۔ کوڈ اس طرح ترتیب دیا گیا ہے کہ آپ کے مخصوص سیٹ اپ کے لیے آسانی سے کنفیگر کیا جا سکے۔

کوڈ کے اوپری حصے میں، آپ کو اہم متغیرات ملیں گے جنہیں آپ کو ایڈجسٹ کرنے کی ضرورت پڑ سکتی ہے:

// 16 حروف اور 2 لائنوں والے ڈسپلے کے لیے LCD ایڈریس 0x27 پر سیٹ کریں
LiquidCrystal_I2C lcd(0x27, displayChars, displayRows);

#define TRIGGER_PIN  12  // Arduino پن جو الٹراسونک سینسر کے ٹرگر پن سے منسلک ہے۔
#define ECHO_PIN     11  // Arduino پن جو الٹراسونک سینسر کے ایکو پن سے منسلک ہے۔
#define MAX_DISTANCE 190 // زیادہ سے زیادہ فاصلہ جس کے لیے ہم پنگ کرنا چاہتے ہیں (سینٹی میٹر میں)۔
  • LCD ایڈریس (0x27): یہ آپ کے LCD ماجیول کا I2C ایڈریس ہے۔ زیادہ تر ماجیول 0x27 استعمال کرتے ہیں، لیکن کچھ 0x3F استعمال کر سکتے ہیں۔ اگر آپ کے ڈسپلے پر کچھ نظر نہیں آتا ہے، تو آپ کو صحیح ایڈریس تلاش کرنے کے لیے I2C اسکینر اسکیچ چلانے اور اس قدر کو اپ ڈیٹ کرنے کی ضرورت پڑ سکتی ہے۔ (ویڈیو میں 08:11 پر)
  • TRIGGER_PIN اور ECHO_PIN: یہ الٹراسونک سینسر کے Trig اور Echo پنوں سے منسلک Arduino ڈیجیٹل پنوں کی وضاحت کرتے ہیں۔ اگر آپ مختلف پن استعمال کرتے ہیں، تو ان تعریفوں کو تبدیل کریں۔
  • MAX_DISTANCE: یہ زیادہ سے زیادہ فاصلہ سینٹی میٹر میں سیٹ کرتا ہے جو سینسر ناپے گا۔ HC-SR04 400-500 سینٹی میٹر تک ناپ سکتا ہے، لیکن کم قدر سیٹ کرنے سے ریڈنگز کی درستگی اور بھروسے میں بہتری آ سکتی ہے، خاص طور پر کم فاصلوں کے لیے۔

loop() فنکشن میں، کوڈ درج ذیل اقدامات انجام دیتا ہے:

  1. یہ فاصلہ ناپنے کے لیے sonar.ping_cm() فنکشن استعمال کرتا ہے اور اسے distance متغیر میں محفوظ کرتا ہے۔
  2. یہ LCD صاف کرتا ہے اور پہلی لائن پر متن "Robojax.com" پرنٹ کرتا ہے۔
  3. پھر یہ کرسر کو دوسری لائن پر رکھتا ہے اور "Distance: " پرنٹ کرتا ہے۔
  4. آخر میں، یہ ناپے گئے distance کی قدر پرنٹ کرنے کے لیے کرسر کو دوسری لائن کی پوزیشن 10 پر لے جاتا ہے اور اس کے بعد "cm" لکھتا ہے۔

لوپ کے آخر میں موجود delay(200) کنٹرول کرتا ہے کہ سینسر کتنی بار نئی پیمائش کرتا ہے اور ڈسپلے کو اپ ڈیٹ کرتا ہے۔

کوڈ کا مظاہرہ

ایک بار جب کوڈ آپ کے Arduino پر اپ لوڈ ہو جاتا ہے، تو LCD روشن ہو جائے گا اور فاصلہ دکھانا شروع کر دے گا۔ آپ اپنا ہاتھ یا کوئی چیز الٹراسونک سینسر کے قریب اور دور لے جا کر سیٹ اپ کو جانچ سکتے ہیں۔ اسکرین پر موجود نمبر حقیقی وقت میں اپ ڈیٹ ہوتا رہے گا، جو سینٹی میٹر میں فاصلہ دکھائے گا۔ (ویڈیو میں 38:07 پر)

اس ویڈیو سے متعلقہ پروجیکٹس

ابواب

  • [00:00] LCD1602 کا تعارف اور پروجیکٹ کا جائزہ
  • [01:30] LCD1602 ہارڈویئر اور I2C ماجیول کی وضاحت
  • [03:14] LCD پن آؤٹ اور I2C ایڈریس کنفیگریشن
  • [05:28] LCD1602 کے لیے وائرنگ ڈایاگرام
  • [06:16] مطلوبہ LCD لائبریری انسٹال کرنا
  • [07:24] LCD پر متن پرنٹ کرنے کے لیے بنیادی کوڈ
  • [08:11] اپنے LCD کا I2C ایڈریس تلاش کرنا
  • [11:10] LCD مثالیں: ٹمٹماتا کرسر اور حسب ضرورت حروف
  • [18:51] LCD مثال: سیریل ڈسپلے اور اسکرولنگ متن
  • [24:36] LCD پر DHT11 درجہ حرارت اور نمی دکھانا
  • [33:00] LCD پر پوٹینشیومیٹر سے وولٹیج دکھانا
  • [35:56] الٹراسونک سینسر کوڈ کو LCD کے ساتھ ملانا
  • [38:07] الٹراسونک فاصلہ ڈسپلے کا مظاہرہ

تصاویر

Sunfounder car assembled
Sunfounder car assembled
Sunfounder 20-LCD1602-ultrasonic
Sunfounder 20-LCD1602-ultrasonic
LCD1602_wiring_ultrasonic_bb
LCD1602_wiring_ultrasonic_bb
921-Lesson 20/31: Displaying distance from ultrasonic sensor on LCD1602
زبان: C++
/*
This sketch reads the distance using the ultrasonic sensor and displays on LCD1602
Download and resource page https://robojax.com/RJT878
watch video https://www.youtube.com/watch?v=NXAswOc_2zg
*/
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
const int displayChars =16;
const int displayRows =2;

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, displayChars, displayRows);
int shomar =0;
#include <NewPing.h>

#define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     11  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 190 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
int distance;

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup() {
  Serial.begin(9600); // Open serial monitor at 9600 baud to see ping results.
  // Robojax code for LCD with I2C
  // initialize the LCD, 
  lcd.begin();
 // Turn on the blacklight and print a message.
  lcd.backlight();

}

void loop() {
  
   distance  = sonar.ping_cm();//get the distance in cm
   lcd.clear();
   lcd.print("Robojax.com");
   lcd.setCursor (0,1);//set cursor to char 0 line 2
   lcd.print("Distance: ");  
   lcd.setCursor (10,1); 
   lcd.print(distance);
   lcd.print("cm"); 
   
   delay(200); 
  

}

آپ کو جن چیزوں کی ضرورت ہو سکتی ہے

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

فائلیں📁

آرڈوینو لائبریریاں (زپ)

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