سبق 74: Arduino کے ساتھ شارپ انفراریڈ سینسر ماجیول کا استعمال
تعارف
یہ گائیڈ ظاہر کرتی ہے کہ Arduino کے ساتھ دو یا زیادہ Sharp انفراریڈ (IR) فاصلے کے سینسرز کو کیسے استعمال کیا جائے تاکہ فاصلہ ناپا جا سکے اور نتائج Serial Monitor پر دکھائے جا سکیں۔ جبکہ ایک سینسر مفید ہے، بہت سی حقیقی دنیا کی ایپلیکیشنز، جیسے اسمارٹ کار، روبوٹک بازو، یا کوئی بھی حرکت کرنے والی مشین، کو بیک وقت متعدد سمتوں سے فاصلے کی پیمائش کی ضرورت ہوتی ہے۔ مثال کے طور پر، آپ آگے کا فاصلہ ناپنے کے لیے ایک سینسر سامنے نصب کر سکتے ہیں، اور تصادم سے بچنے کے لیے دوسرا دائیں یا بائیں جانب۔ یہ ٹیوٹوریل آپ کو دکھاتا ہے کہ اپنے Arduino کو متعدد سینسرز کو مؤثر طریقے سے سنبھالنے کے لیے کیسے ترتیب دیا جائے، ایک علیحدہ، تفصیلی ویڈیو پر مبنی جو انفرادی سینسر کی خصوصیات اور آپریشن کی وضاحت کرتی ہے۔
یہاں کچھ عملی پروجیکٹ آئیڈیاز ہیں جو آپ کو متاثر کر سکتے ہیں:
- ایک روبوٹ بنانا جو بائیں، دائیں اور سامنے کی سمتوں میں فاصلہ ناپ کر رکاوٹوں سے بچتا ہے۔
- ایک اسمارٹ پارکنگ اسسٹنٹ بنانا جو گاڑی کو تنگ جگہ میں لے جانے کے لیے متعدد سینسرز استعمال کرتا ہے۔
- ایک سیکیورٹی سسٹم تیار کرنا جو دروازے یا راہداری کی نگرانی مختلف زاویوں پر رکھے گئے سینسرز سے کرتا ہے۔
- ایک انٹرایکٹو آرٹ انسٹالیشن بنانا جہاں دیکھنے والے کے ہاتھ کا فاصلہ ڈسپلے کو تبدیل کرتا ہے۔

اس ویڈیو میں، توجہ وائرنگ اور کوڈ پر ہے جو متعدد Sharp IR سینسرز چلانے کے لیے درکار ہے۔ ڈیمو میں دو GP2Y0A21YK0F سینسرز استعمال کیے گئے ہیں، جو 10 سے 80 سینٹی میٹر تک فاصلہ ناپتے ہیں۔ کوڈ اس طرح ترتیب دیا گیا ہے کہ اسے آسانی سے بڑھایا جا سکے، تاکہ آپ صرف چند لائنوں کے ساتھ تیسرا، چوتھا، یا اس سے بھی زیادہ سینسر شامل کر سکیں۔
ہارڈویئر اور اجزاء
اس پروجیکٹ کے ساتھ آگے بڑھنے کے لیے، آپ کو درج ذیل اجزاء کی ضرورت ہوگی:
- ایک Arduino بورڈ (مثلاً، Uno، Mega)۔
- دو یا زیادہ Sharp IR فاصلے کے سینسرز (مثلاً، GP2Y0A21YK0F)۔
- جمپر تار۔
- ایک بریڈ بورڈ (اختیاری، آسان کنکشن کے لیے)۔
وائرنگ گائیڈ
Sharp IR سینسر میں تین تاریں ہیں: سرخ (پاور)، سیاہ (گراؤنڈ)، اور پیلی (سگنل آؤٹ پٹ)۔ وائرنگ سیدھی ہے۔ پہلے سینسر کے لیے، اس کی سرخ تار کو Arduino کے 5V پن سے، سیاہ تار کو گراؤنڈ (GND) پن سے، اور پیلی سگنل تار کو ایک اینالاگ پن سے جوڑیں، مثلاً A1۔ دوسرے سینسر کے لیے، اس کی سرخ تار کو اسی یا کسی اور 5V پن سے، سیاہ تار کو GND سے، اور پیلی تار کو ایک مختلف اینالاگ پن سے جوڑیں، جیسے A2۔
اگر 5V پن ختم ہو جائیں، تو ویڈیو ایک چالاک حل فراہم کرتی ہے۔ آپ کسی بھی ڈیجیٹل پن کو پاور سورس کے طور پر استعمال کر سکتے ہیں۔ کوڈ میں، ڈیجیٹل پن 2 کو آؤٹ پٹ کے طور پر ترتیب دیا گیا ہے اور HIGH پر سیٹ کیا گیا ہے، جو مسلسل 5V فراہم کرتا ہے۔ پھر آپ اپنے سینسرز کی سرخ تاروں کو مخصوص 5V پن کے بجائے اس ڈیجیٹل پن سے جوڑیں گے۔ گراؤنڈ تاریں Arduino کے کسی بھی GND پن سے منسلک کی جا سکتی ہیں۔ ویڈیو اس سیٹ اپ کا ڈیمو [00:06:10] پر دکھاتی ہے۔
کنکشنز کے بصری حوالے کے لیے، براہ کرم نیچے دیے گئے وائرنگ ڈایاگرام کو دیکھیں:



کوڈ کی وضاحت
یہ سیکشن کوڈ کے صارف کے قابل ترتیب حصوں پر توجہ مرکوز کرتا ہے، جو سب اسکیچ کے اوپری حصے میں واقع ہیں۔ یہ وہ جگہ ہے جہاں آپ اپنے پن اور سینسر ماڈلز کی وضاحت کریں گے۔
سب سے پہلے، کوڈ Sharp IR سینسرز کے لیے ضروری لائبریری شامل کرتا ہے، #include <SharpIR.h>۔ یہ لائبریری سینسر سے اینالاگ وولٹیج کو فاصلے کی ریڈنگ میں تبدیل کرنے کے لیے درکار پیچیدہ ریاضی کو سنبھالتی ہے۔
اگلا، آپ اپنے ہر سینسر کے لیے اینالاگ پنز کی وضاحت کریں گے۔ مثال کوڈ #define IR1 A1 اور #define IR2 A2 استعمال کرتا ہے۔ اگر آپ دو سے زیادہ سینسر استعمال کر رہے ہیں، تو آپ یہاں مزید تعریفیں شامل کریں گے، جیسے #define IR3 A3۔
کنفیگریشن کا ایک اہم حصہ آپ کے سینسر کے لیے صحیح ماڈل سیٹ کرنا ہے۔ کوڈ #define model1 1080 اور #define model2 1080 استعمال کرتا ہے۔ یہ نمبر من مانی نہیں ہے؛ یہ لائبریری کو بتاتا ہے کہ آپ کے پاس کون سا سینسر ہے، کیونکہ ہر ماڈل کا وولٹیج سے فاصلے کا منحنی مختلف ہوتا ہے۔ کوڈ کے تبصرے ایک مددگار فہرست فراہم کرتے ہیں:
- 2 سے 15 سینٹی میٹر GP2Y0A51SK0F کے لیے 215 استعمال کریں
- 4 سے 30 سینٹی میٹر GP2Y0A41SK0F / GP2Y0AF30 سیریز کے لیے 430 استعمال کریں
- 10 سے 80 سینٹی میٹر GP2Y0A21YK0F کے لیے 1080 استعمال کریں
- 10 سے 150 سینٹی میٹر GP2Y0A60SZLF کے لیے 10150 استعمال کریں
- 20 سے 150 سینٹی میٹر GP2Y0A02YK0F کے لیے 20150 استعمال کریں
- 100 سے 550 سینٹی میٹر GP2Y0A710K0F کے لیے 100550 استعمال کریں
آپ کو اس قدر کو اپنے مخصوص سینسر سے ملانے کے لیے تبدیل کرنا ہوگا۔ مثال کے طور پر، اگر آپ GP2Y0A02YK0F استعمال کر رہے تھے، تو آپ تعریف کو #define model1 20150 میں تبدیل کر دیں گے۔ اس کے بعد کوڈ ہر سینسر کے لیے ایک آبجیکٹ بناتا ہے، جیسے SharpIR SharpIR1(IR1, model1);۔ یہ لائن پہلے سینسر کے لیے پن اور ماڈل کو جوڑتی ہے۔ اگر آپ مزید سینسر شامل کرتے ہیں، تو آپ اس لائن کو کاپی کریں گے اور آبجیکٹ کا نام، پن، اور ماڈل تبدیل کریں گے۔
setup() فنکشن میں، Serial Monitor کو 9600 باؤڈ پر شروع کیا جاتا ہے۔ یہ وہ رفتار ہے جس پر Arduino آپ کے کمپیوٹر سے بات چیت کرتا ہے۔ کوڈ میں ایک سیکشن بھی شامل ہے تاکہ اگر ضرورت ہو تو ڈیجیٹل پن کو 5V سورس کے طور پر استعمال کیا جا سکے، جیسا کہ وائرنگ سیکشن میں وضاحت کی گئی ہے۔ یہ pinMode(2,OUTPUT); اور digitalWrite(2, HIGH); کے ساتھ کیا جاتا ہے۔
آخر میں، loop() فنکشن میں مرکزی منطق ہوتی ہے۔ شروع میں delay(500); ہے، جو ہر ریڈنگ کے سیٹ کے درمیان وقت کو 500 ملی سیکنڈ پر سیٹ کرتا ہے۔ آپ اسے ریڈنگز کو کم یا زیادہ بار بار کرنے کے لیے ایڈجسٹ کر سکتے ہیں۔ لوپ کا مرکز وہ جگہ ہے جہاں آپ لائبریری کے distance() فنکشن کا استعمال کرتے ہوئے ہر سینسر سے فاصلہ پڑھتے ہیں، جیسے int dis1=SharpIR1.distance();۔ نتائج پھر وضاحتی متن کے ساتھ Serial Monitor پر پرنٹ کیے جاتے ہیں، جیسے Serial.print("Distance (1): ");، اس کے بعد قدر اور یونٹ "cm"۔
لائیو پروجیکٹ ڈیمو
ویڈیو میں، پیش کنندہ دو سینسرز کے ساتھ سیٹ اپ کا مظاہرہ کرتا ہے۔ جیسا کہ آپ [00:07:44] پر مظاہرے میں دیکھ سکتے ہیں، سیریل مانیٹر دونوں سینسرز سے فاصلے کی ریڈنگز دکھاتا ہے۔ جب پہلے سینسر کے سامنے کوئی چیز رکھی جاتی ہے، تو "Distance (1)" کی ریڈنگ تبدیل ہوتی ہے۔ اسی طرح، جب دوسرے سینسر کے سامنے کوئی چیز رکھی جاتی ہے، تو "Distance (2)" کی ریڈنگ اپڈیٹ ہوتی ہے۔ ویڈیو سے پتہ چلتا ہے کہ کاغذ کی ایک شیٹ کو فاصلے پر رکھنے سے، سینسرز تقریباً 23 اور 24 سینٹی میٹر پڑھتے ہیں۔ جب ایک سینسر بلاک ہوتا ہے، تو اس کی ریڈنگ تقریباً 17 سینٹی میٹر تک گر جاتی ہے، جس سے تصدیق ہوتی ہے کہ ہر سینسر آزادانہ طور پر کام کرتا ہے اور اپنی متعلقہ سمت کے لیے حقیقی وقت میں فاصلے کا ڈیٹا فراہم کرتا ہے۔ یہ کوڈ کی ایک ساتھ متعدد سینسرز کو سنبھالنے کی صلاحیت کی توثیق کرتا ہے۔
ابواب
- [00:00] متعدد شارپ آئی آر سینسرز استعمال کرنے کا تعارف
- [00:28] متعدد فاصلے کے سینسرز کے لیے استعمالات
- [01:34] کوڈ کی وضاحت: لائبریری اور پن کی تعریفیں
- [02:24] سینسر ماڈلز کی تشکیل اور آبجیکٹ بنانا
- [04:15] سیٹ اپ اور لوپ فنکشنز کی وضاحت
- [06:10] متعدد سینسرز کے لیے وائرنگ گائیڈ
- [07:44] دو سینسرز کے ساتھ لائیو مظاہرہ
++
/*
* Using two or more Sharp IR distance sensors with Arduino
* Measure distance
* Download and resource page for this video https://robojax.com/RJT143
* Watch video instructions for this video: https://youtu.be/WQ3oFyF5qeY
*
* Watch main video explaining the Sharp IR distance sensor:
* https://robojax.com?vid=robojax-sharp_IR
*
* Written by Ahmad Shamshiri for Robojax.com on Saturday, December 1, 2018
* at 20:56 in Ajax, Ontario, Canada
*
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <SharpIR.h>
#define IR1 A1 // define signal pin
#define IR2 A2 // define signal pin
#define model1 1080 // for GP2Y0A21YK0F used 1080
#define model2 1080 // for GP2Y0A21YK0F used 1080
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
/*
2 to 15 cm GP2Y0A51SK0F use 215
4 to 30 cm GP2Y0A41SK0F / GP2Y0AF30 series use 430
10 to 80 cm GP2Y0A21YK0F use 1080
10 to 150 cm GP2Y0A60SZLF use 10150
20 to 150 cm GP2Y0A02YK0F use 20150
100 to 550 cm GP2Y0A710K0F use 100550
*/
SharpIR SharpIR1(IR1, model1);
SharpIR SharpIR2(IR2, model2);
void setup() {
// Multiple Sharp IR Distance meter code for Robojax.com
Serial.begin(9600);
Serial.println("Robojax Sharp IR ");
// extra pin for 5V if needed
pinMode(2,OUTPUT);// define pin 2 as output
digitalWrite(2, HIGH);// set pin 2 HIGH so it always have 5V
// Robojax.com 20181201
}
void loop() {
// Sharp IR code for Robojax.com 20181201
delay(500);
unsigned long startTime=millis(); // takes the time before the loop on the library begins
int dis1=SharpIR1.distance(); // this returns the distance for sensor 1
int dis2=SharpIR2.distance(); // this returns the distance for sensor 2
// Sharp IR code for Robojax.com 20181201
Serial.print("Distance (1): ");
Serial.print(dis1);
Serial.println("cm");
Serial.print("Distance (2): ");
Serial.print(dis2);
Serial.println("cm");
// Sharp IR code for Robojax.com
}
++
/*
* Lesson 74: Using two or more Sharp IR distance sensors
* Sharp IR (infrared) distance measurement module for Arduino
* Measures the distance in cm.
* Written by Ahmad Shamshiri for Robojax.com
* on February 25, 2019 at 21:38 in Ajax, Ontario, Canada
* Original library: https://github.com/guillaume-rico/SharpIR
* Watch video instructions for this code: https://youtu.be/WQ3oFyF5qeY
*
* Full explanation of this code and wiring diagram is available at
* my Arduino Course at Udemy.com here: http://robojax.com/L/?id=62
* Written by Ahmad Shamshiri on February 3, 2018 at 07:34
* in Ajax, Ontario, Canada. www.robojax.com
*
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
*/
// Sharp IR code for Robojax.com
#include
#define IR A0 // define signal pin
#define model 1080 // used 1080 because model GP2Y0A21YK0F is used
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
// model: an int that determines your sensor: 1080 for GP2Y0A21Y
// 20150 for GP2Y0A02Y
// 430 for GP2Y0A41SK
/*
2 to 15 cm GP2Y0A51SK0F use 1080
4 to 30 cm GP2Y0A41SK0F / GP2Y0AF30 series use 430
10 to 80 cm GP2Y0A21YK0F use 1080
10 to 150 cm GP2Y0A60SZLF use 10150
20 to 150 cm GP2Y0A02YK0F use 20150
100 to 550 cm GP2Y0A710K0F use 100550
*/
#include <SharpIR.h>
#define IR1 A1 // define signal pin
#define IR2 A2 // define signal pin
#define model1 1080 // for GP2Y0A21YK0F used 1080
#define model2 1080 // for GP2Y0A21YK0F used 1080
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
/*
2 to 15 cm GP2Y0A51SK0F use 215
4 to 30 cm GP2Y0A41SK0F / GP2Y0AF30 series use 430
10 to 80 cm GP2Y0A21YK0F use 1080
10 to 150 cm GP2Y0A60SZLF use 10150
20 to 150 cm GP2Y0A02YK0F use 20150
100 to 550 cm GP2Y0A710K0F use 100550
*/
SharpIR SharpIR1(IR1, model1);
SharpIR SharpIR2(IR2, model2);
void setup() {
// Multiple Sharp IR Distance meter code for Robojax.com
Serial.begin(9600);
Serial.println("Robojax Sharp IR ");
// extra pin for 5V if needed
pinMode(2,OUTPUT);// define pin 2 as output
digitalWrite(2, HIGH);// set pin 2 HIGH so it always have 5V
// Robojax.com 20181201
}
void loop() {
// Sharp IR code for Robojax.com 20181201
delay(500);
unsigned long startTime=millis(); // takes the time before the loop on the library begins
int dis1=SharpIR1.distance(); // this returns the distance for sensor 1
int dis2=SharpIR2.distance(); // this returns the distance for sensor 2
// Sharp IR code for Robojax.com 20181201
Serial.print("Distance (1): ");
Serial.print(dis1);
Serial.println("cm");
Serial.print("Distance (2): ");
Serial.print(dis2);
Serial.println("cm");
// Sharp IR code for Robojax.com
}
وسائل اور حوالہ جات
-
باہرونیDistance-measuring sensors (website)sharp-world.com
-
باہرونیSharp IR Library (from GitHub)github.com
-
باہرونیSharp Library from RoboJob.comrobojax.com
فائلیں📁
فریٹزنگ فائل
-
شارپ IR سینسر GP2Y0A02YK0F
sharp ir sensor GP2Y0A02YK0F .fzz
دیگر فائلیں
-
Sharp GP2Y0A41SK0F انفراریڈ فاصلہ سینسر ڈیٹا شیٹ
robojax_sharp_IR_GP2Y0A41SK0F_datasheet.pdf0.84 MB -
Sharp GP2Y0A710K0F انفراریڈ فاصلہ سینسر ڈیٹا شیٹ
robojax_sharp_IR_GP2Y0A710K0F_datasheet.pdf0.33 MB -
Arduino library for Sharp Infrard distance sensor
robojax-sharp_IR-master.zip