- مطلوبہ اجزاء
- اے پی ڈی ایس - 9960 ڈیجیٹل قربت آرجیبی اور اشارہ سینسر کا تعارف
- سرکٹ ڈایاگرام
- پروگرامنگ اردوینو برائے اشارہ اور رنگین سینسنگ
آج زیادہ تر فونز کسی بھی ایپ کو کھولنے یا بند کرنے ، میوزک شروع کرنے ، کالوں میں شرکت وغیرہ کے لئے اشارے پر قابو پانے کی خصوصیت کے ساتھ آتے ہیں۔ وقت کی بچت کے لئے یہ ایک بہت ہی آسان خصوصیت ہے اور اشاروں سے کسی بھی ڈیوائس کو کنٹرول کرنا بھی ٹھنڈا لگتا ہے۔ اس سے پہلے ہم اشارے سے کنٹرول شدہ روبوٹ اور اشارے سے کنٹرول ہوا ایئر ماؤس بنانے کے لئے ایکسلرومیٹر استعمال کرتے تھے۔ لیکن آج ہم اردوینو کے ساتھ اشارہ سینسر اے پی ڈی ایس 9960 کو انٹرفیس کرنا سیکھتے ہیں ۔ اس سینسر میں رنگوں کا پتہ لگانے کے لئے آر جی بی سینسر بھی ہے ، جو اس ٹیوٹوریل میں بھی استعمال ہوگا۔ لہذا آپ کو اشارے اور رنگ کا پتہ لگانے کے لئے الگ الگ سینسر استعمال کرنے کی ضرورت نہیں ہے ، اگرچہ رنگ کی نشاندہی کے لئے ایک سرشار سینسر دستیاب ہے- TCS3200 رنگین سینسر جو ہم پہلے ہی رنگین چھانٹنے والی مشین بنانے کے لئے ارڈینو کے ساتھ استعمال کر چکے ہیں۔
مطلوبہ اجزاء
- اردوینو یو این او
- اے پی ڈی ایس 9960 آر جی بی اور اشارہ سینسر
- 16x2 LCD
- ڈی پی ڈی ٹی سوئچ
- 100K برتن اور 10K ریزٹر
- جمپر کیبلز
اے پی ڈی ایس - 9960 ڈیجیٹل قربت آرجیبی اور اشارہ سینسر کا تعارف
اے پی ڈی ایس 9960 ایک ملٹی فنکشن سینسر ہے۔ یہ روشنی میں اشاروں ، محیطی روشنی اور آرجیبی قدروں کا سراغ لگا سکتا ہے۔ اس سینسر کو قربت سینسر کے طور پر بھی استعمال کیا جاسکتا ہے اور زیادہ تر اسمارٹ فونز میں استعمال ہوتا ہے ، کال میں شرکت کے دوران ٹچ اسکرین کو غیر فعال کرنے کے لئے۔
یہ سینسر چار فوٹوڈائڈس پر مشتمل ہے۔ یہ فوٹو ڈوڈیز عکاس شدہ IR انرجی کا پتہ لگاتے ہیں جو ایک بورڈ ایل ای ڈی کے ذریعے منتقل ہوتا ہے۔ لہذا جب بھی کوئی اشارہ کیا جاتا ہے تو پھر یہ IR توانائی رکاوٹ بن جاتی ہے اور سینسر کی عکاسی کرتی ہے ، اب سینسر اشارے کے بارے میں معلومات (سمت ، رفتار) کا پتہ لگاتا ہے اور اسے ڈیجیٹل معلومات میں بدل دیتا ہے۔ اس سینسر کو عکاس IR لائٹ کا پتہ لگاکر رکاوٹ کے فاصلے کو ماپنے کے لئے استعمال کیا جاسکتا ہے۔ اس میں آرجیبی رنگوں کو سینسنگ کرنے کے لئے یووی اور آئی آر بلاک کرنے والے فلٹرز ہیں اور یہ ہر رنگ کے لئے 16 بٹ ڈیٹا تیار کرتا ہے۔
اے پی ڈی ایس - 9960 سینسر کا پن آؤٹ نیچے دکھایا گیا ہے۔ یہ سینسر I 2 C مواصلات کے پروٹوکول پر کام کرتا ہے۔ اس میں 1µA موجودہ استعمال ہوتا ہے اور اس میں طاقت 3.3V ہے لہذا محتاط رہیں اور اسے 5V پن سے متصل کریں۔ یہاں INT پن میں خلل پڑتا ہے ، جس کا استعمال I 2 C مواصلت کو چلانے کے لئے کیا جاتا ہے ۔ اور PSL جمپر مربوط نہیں ہے تو VL پن ، بورڈ ایل ای ڈی کے لئے اختیاری پاور پن ہے۔ اگر پی ایس جمپر بند ہے تو آپ کو صرف وی سی سی پن کو پاور کرنے کی ضرورت ہے ، یہ دونوں کو ماڈیول اور آئی آر ایل ای ڈی فراہم کرے گا۔
سرکٹ ڈایاگرام
ایردوینو کے ساتھ اے پی ڈی ایس 960 کے لئے رابطے بہت آسان ہیں۔ ہم دو طریقوں آرجیبی سینسنگ اور اشارہ سینسنگ کے مابین سوئچ کرنے کیلئے ڈی پی ڈی ٹی بٹن استعمال کریں گے۔ سب سے پہلے I2C مواصلاتی پن SDA اور APDS9960 کے SCL بالترتیب Ardino پن A4 اور A5 سے جڑے ہوئے ہیں۔ جیسا کہ پہلے کہا گیا ہے کہ سینسر کے لئے آپریٹنگ وولٹیج 3.3v ہے لہذا ، اے پی ڈی ایس 9960 کا وی سی سی اور جی این ڈی 3.3V اور آرڈینوو کے جی این ڈی سے جڑا ہوا ہے۔ اے پی ڈی ایس 9960 کا رکاوٹ پن (INT) اردوینو کے D2 پن سے جڑا ہوا ہے۔
ایل سی ڈی کے لئے ، ڈیٹا پن (D4-D7) ڈیجیٹل پنوں سے منسلک ہیں Ardino کے D6-D3 اور RS اور EN پنوں D6 اور D7 اور Aruino سے منسلک ہیں۔ LCD کا V0 برتن سے منسلک ہوتا ہے اور LCD کی چمک کو کنٹرول کرنے کے لئے 100K برتن استعمال ہوتا ہے۔ ڈی پی ڈی ٹی بٹنوں کیلئے ہم نے صرف 3 پن استعمال کیے ہیں۔ دوسرا پن ان پٹ کے لئے اردوینو کے ڈی 7 پن سے منسلک ہے اور باقی دو جی این ڈی اور وی سی سی سے منسلک ہیں جس کے بعد 10K ریزٹر ہوتا ہے۔
پروگرامنگ اردوینو برائے اشارہ اور رنگین سینسنگ
پروگرامنگ کا حصہ آسان اور آسان ہے اور اس ٹیوٹوریل کے آخر میں ڈیمو ویڈیو کے ساتھ مکمل پروگرام دیا گیا ہے۔
پہلے ہمیں سپارک فن نے بنایا ہوا لائبریری انسٹال کرنے کی ضرورت ہے ۔ اس لائبریری کو انسٹال کرنے کے لئے اسکیچ-> لائبریری شامل کریں>> لائبریریوں کا نظم کریں پر جائیں۔
اب سرچ بار میں "اسپارکفن اے پی ڈی ایس 9960" ٹائپ کریں اور جب آپ لائبریری دیکھیں گے تو انسٹال بٹن پر کلک کریں۔
اور ہم جانے کے لئے تیار ہیں۔ آو شروع کریں.
تو سب سے پہلے ہم نے تمام مطلوبہ ہیڈر فائلوں کو شامل کرنا ہے۔ LCDidCrystal.h کی پہلی ہیڈر فائل LCD افعال کے لئے استعمال کی جاتی ہے۔ دوسری ہیڈر فائل Wire.h I 2 C مواصلت کے لئے استعمال کی جاتی ہے اور آخری ایک SparkFun_APDS996.h APDS9960 سینسر کے لئے استعمال کیا جاتا ہے۔
# شامل کریں
اب اگلی لائنوں میں ہم نے بٹن اور LCD کیلئے پنوں کی تعریف کی ہے۔
کونٹ INT بٹن پن = 7؛ کونٹ انٹ آر ایس ایس = 12 ، این = 11 ، ڈی 4 = 6 ، ڈی 5 = 5 ، ڈی 6 = 4 ، ڈی 7 = 3؛ لیکویڈ کرسٹل ایل سی ڈی (آر ایس ، این ، ڈی 4 ، ڈی 5 ، ڈی 6 ، ڈی 7)؛
اگلے حصے میں، ہم تسلسل پن ڈیجیٹل پن 2 اور ایک متغیر پر منسلک ہے جس کے لئے ایک میکرو وضاحت کی گئی ہے buttonState بٹن اور کی موجودہ حالت کے لئے isr_flag تسلسل سروس معمول کے لئے.
# تعریف ای پی ڈی ایس 9960DPT 2 انٹ بٹن اسٹیٹ؛ int isr_flag = 0؛
اس کے بعد اسپارک فن_اپی ڈی ایس 9960 کے ل an ایک شے تیار کی گئی ہے ، تاکہ ہم اشاروں کی نقل و حرکت تک رسائی حاصل کرسکیں اور آر جی بی کی قدریں حاصل کرسکیں۔
SparkFun_APDS9960 apds = SparkFun_APDS9960 ()؛ uint16_t ambient_light = 0؛ uint16_t red_light = 0؛ uint16_t گرین_ لائٹ = 0؛ uint16_t بلیو_ لائٹ = 0؛
میں سیٹ اپ کی تقریب، پہلی لائن ان پٹ کے طور پر بٹن (کم / ہائی) سے قدر اور دوسری اور تیسری لائن کی وضاحت کرتا رکاوٹ اور بٹن پن لانے کے لئے ہے. apds.init () APDS9960 سینسر کا آغاز کرتا ہے اور lcd.begin (16،2) LCD کا آغاز کرتا ہے۔
باطل سیٹ اپ () { بٹن اسٹیٹ = ڈیجیٹل ریڈ (بٹن پن)؛ پن موڈ (اے پی ڈی ایس 9960DPT ، ان پٹ)؛ پن موڈ (بٹن پن ، ان پٹ)؛ apds.init ()؛ lcd.begin (16 ، 2)؛ }
میں لوپ تقریب پہلی لائن میں بٹن سے اقدار اور دکانوں یہ ہو جاتا buttonState اوائل وضاحت کی متغیر. اب اگلی لائنوں میں ہم بٹن سے اقدار کی جانچ کررہے ہیں ، اگر یہ زیادہ ہے تو ہم لائٹ سینسر کو اہل بناتے ہیں اور اگر یہ کم ہے تو اشارہ سینسر کا آغاز کریں۔
attachInterrupt () بیرونی مداخلت کے لئے استعمال کیا ایک تقریب اس معاملے میں سینسر کا تسلسل ہے جس میں ہے. اس فنکشن میں پہلی دلیل وقفہ نمبر ہے۔ ارڈینوو یو این او میں ، دو رکاوٹ پنوں ڈیجیٹل پن ہیں - 2 اور 3 INT.0 اور INT.1 کے ذریعہ۔ اور ہم نے اسے پن 2 سے جوڑ دیا ہے لہذا ہم نے وہاں 0 لکھا ہے۔ دوسری دلیل فنکشن کو انٹراپٹروٹائن () کہتے ہیں جو بعد میں بیان کی گئی ہے۔ آخری دلیل FALLING ہے تاکہ جب پن اونچی سے نیچے تک جائے تو یہ مداخلت کو متحرک کردے گی۔ اردوینو رکاوٹوں کے بارے میں مزید معلومات حاصل کریں۔
باطل لوپ () { بٹن اسٹیٹ = ڈیجیٹل ریڈ (بٹن پن)؛ اگر (بٹن اسٹیٹ == ہائی) { apds.enableLightSensor (سچ)؛ }
اگلے حصے میں ، ہم بٹن پن کی جانچ کرتے ہیں۔ اگر یہ زیادہ ہے تو آرجیبی سینسر کیلئے عمل شروع کریں ۔ پھر چیک کریں کہ لائٹ سینسر اقدار پڑھ رہا ہے یا نہیں۔ اگر وہ اقدار کو پڑھنے کے قابل نہیں ہے تو پھر ایسی صورت میں ، " ہلکی قدروں کو پڑھنے میں خرابی " پرنٹ کریں ۔ اور اگر اس کے بعد وہ اقدار پڑھ سکتا ہے تو ، تین رنگوں کی قدروں کا موازنہ کریں اور جو بھی زیادہ ہو ، اس رنگ کو LCD پر پرنٹ کریں۔
اگر (buttonState == اعلی) { تو (apds.readAmbientLight (ambient_light) - ! apds.readRedLight (red_light) - ! apds.readGreenLight (green_light) - ! apds.readBlueLight (blue_light)) { lcd.print ("روشنی کی قیمتوں کو پڑھنے میں خرابی")؛ } ورنہ { تو (red_light> green_light) { تو (red_light> blue_light) { lcd.print ("ریڈ")؛ تاخیر (1000)؛ lcd.clear ()؛ } ……. ………..
اگلی لائنوں میں ایک بار پھر بٹن پن کی جانچ کریں ، اور اگر یہ عمل کم ہے تو اشارہ سینسر ۔ اس کے بعد isr_flag کی جانچ کریں اور اگر یہ 1 ہے تو پھر فنکشن detachInterrupt () کہا جاتا ہے۔ یہ فنکشن رکاوٹ کو بند کرنے کے لئے استعمال ہوتا ہے۔ اگلی لائن ہینڈل گیشچر () کو کال کرتی ہے جو بعد میں بیان کی گئی ہے۔ اگلی لائنوں میں isr_flag کو صفر سے تعبیر کریں اور مداخلت کو جوڑیں ۔
ورنہ اگر (بٹن اسٹیٹ == LOW) { اگر (isr_flag == 1) { detachInterrupt (0)؛ ہینڈل اشارہ ()؛ isr_flag = 0؛ منسلک متناسب (0، انٹراپٹ روٹین، پڑنا)؛ } }
اگلا انٹرپروٹروٹین () فنکشن ہے۔ اس فنکشن کو isr_flag متغیر 1 کو تبدیل کرنے کے لئے استعمال کیا جاتا ہے ، تاکہ مداخلت کی خدمت کو شروع کیا جاسکے۔
باطل مداخلت روٹین ()۔ r isr_flag = 1؛ }
handleGesture () تقریب کے اگلے حصے میں وضاحت کی گئی ہے. یہ فنکشن سب سے پہلے اشارہ سینسر کی دستیابی کی جانچ کرتا ہے۔ اگر یہ دستیاب ہے تو وہ اشاروں کی قدروں اور پڑھنے پر یہ اشارہ کرتا ہے کہ یہ کون سا اشارہ ہے (اوپر ، نیچے ، دائیں ، بائیں ، دور ، قریب) اور LCD پر متعلقہ اقدار پرنٹ کرتا ہے۔
باطل handleGesture () { تو (apds.isGestureAvailable ()) { سوئچ (apds.readGesture ()) { کیس DIR_UP: lcd.print ("اپ")؛ تاخیر (1000)؛ lcd.clear ()؛ توڑ کیس DIR_DOWN: lcd.print ("نیچے")؛ تاخیر (1000)؛ lcd.clear ()؛ توڑ کیس DIR_LEFT: lcd.print ("LEFT")؛ تاخیر (1000)؛ lcd.clear ()؛ توڑ کیس DIR_RIGHT: lcd.print ("RIGHT")؛ تاخیر (1000)؛ lcd.clear ()؛ توڑ کیس DIR_NEAR: lcd.print ("قریب")؛ تاخیر (1000)؛ lcd.clear ()؛ توڑ کیس DIR_FAR: lcd.print ("FAR")؛ تاخیر (1000)؛ lcd.clear ()؛ توڑ پہلے سے طے شدہ: lcd.print ("NONE")؛ تاخیر (1000)؛ lcd.clear ()؛ } } }
آخر میں ، کوڈ کو اردوینو میں اپ لوڈ کریں اور سینسر کے شروع ہونے کا انتظار کریں۔ اب جبکہ بٹن کو آف کردیا گیا ہے اس کا مطلب یہ اشارہ موڈ میں ہے ۔ لہذا اپنے ہاتھوں کو بائیں ، دائیں ، اوپر ، نیچے کی سمت میں منتقل کرنے کی کوشش کریں۔ کے لئے اب تک اشارہ، 2-3 سیکنڈ کے لئے سینسر سے 2-4 انچ کے فاصلے پر اپنے ہاتھ رکھیں اور اسے ختم. اور قریب اشارے کیلئے اپنے ہاتھ کو سینسر سے دور رکھیں پھر اسے قریب رکھیں اور اسے ہٹائیں۔
اب اس کو رنگ سینسنگ موڈ میں رکھنے کے لئے بٹن کو آن کریں اور سینسر کے قریب ایک ایک کرکے سرخ ، نیلے اور سبز رنگ کے اشیاء لیں۔ یہ آبجیکٹ کا رنگ پرنٹ کرے گا۔