سبق 14/31-1: آرڈوینو ملیس (بغیر تاخیر) اور میپ فنکشنز | سن فاؤنڈر روبوجیکس
یہ گائیڈ Arduino کے millis() فنکشن کا تعارف کراتی ہے، جو وقت پر مبنی پروجیکٹس کے لیے ایک بنیادی ٹول ہے جنہیں غیر مسدود کوڈ کی عملدرآمد کی ضرورت ہوتی ہے۔ delay() کے برعکس، جو پورے پروگرام کو روک دیتا ہے، millis() بورڈ کے شروع ہونے کے بعد گزرے ہوئے وقت کو ٹریک کرتا ہے، جس سے آپ کا Arduino مؤثر طریقے سے ملٹی ٹاسک کر سکتا ہے۔ آپ اس تکنیک کو استعمال کر کے یہ بنا سکتے ہیں:
- غیر مسدود LED بلنکرز جو دوسرے کوڈ کے چلتے ہوئے کام کرتے ہیں۔
- سینسرز یا بٹنوں سے متحرک ہونے والے وقت کے واقعات، جیسے ایک روشنی جو بٹن دبانے کے 5 سیکنڈ بعد بند ہو جائے۔
- سادہ ڈیٹا لاگنگ سسٹم جو باقاعدہ وقفوں پر سینسر کی اقدار ریکارڈ کرتے ہیں۔
- یوزر انٹرفیس سسٹم جو بغیر منجمد ہوئے ان پٹس کا جواب دیتے ہیں۔
millis() فنکشن کو سمجھنا
millis() فنکشن ایک بلٹ ان Arduino کمانڈ ہے جو Arduino بورڈ کے موجودہ پروگرام کو چلانا شروع کرنے کے بعد سے گزرے ہوئے ملی سیکنڈز کی تعداد لوٹاتا ہے۔ یہ پاور آن ہونے پر صفر سے شروع ہوتا ہے اور ہر ملی سیکنڈ میں بڑھتا ہے۔ آپ اپنے کوڈ میں کسی بھی مقام پر اس فنکشن کو کال کر کے موجودہ "اپ ٹائم" ویلیو حاصل کر سکتے ہیں۔ مثال کے طور پر، 1 سیکنڈ کے بعد، یہ 1000 لوٹاتا ہے؛ 5 سیکنڈ کے بعد، یہ 5000 لوٹاتا ہے۔ اہم فائدہ یہ ہے کہ یہ آپ کے کوڈ کو نہیں روکتا، لہذا آپ وقت چیک کر سکتے ہیں جبکہ دیگر کام جاری رہتے ہیں۔
delay() سے کیوں بچیں؟
delay() فنکشن پروگرام کو روکنے کا ایک آسان طریقہ ہے، لیکن یہ ایک مسدود فنکشن ہے۔ جب آپ delay(5000) کال کرتے ہیں، تو Arduino 5 سیکنڈ کے لیے تمام دوسرے کوڈ کو چلانا بند کر دیتا ہے، جس سے منسلک تمام اجزاء منجمد ہو جاتے ہیں۔ یہ ان پروجیکٹس کے لیے مسئلہ ہے جنہیں ان پٹس کا جواب دینے یا آؤٹ پٹس کو مسلسل اپ ڈیٹ کرنے کی ضرورت ہوتی ہے۔ millis() استعمال کرنے سے آپ یہ چیک کر سکتے ہیں کہ آیا ایک مخصوص وقت گزر چکا ہے بغیر اپنے باقی پروگرام کو روکے، جو اسے ملٹی ٹاسکنگ کے لیے مثالی بناتا ہے۔
مطلوبہ ہارڈویئر
- Arduino بورڈ (Uno، Mega، وغیرہ)
- پروگرامنگ اور پاور کے لیے USB کیبل
وائرنگ گائیڈ
اس مثال کے لیے کوئی بیرونی وائرنگ درکار نہیں ہے۔ Arduino کو صرف کوڈ اپ لوڈ کرنے اور سیریل مانیٹر آؤٹ پٹ دیکھنے کے لیے USB کے ذریعے آپ کے کمپیوٹر سے منسلک ہونے کی ضرورت ہے۔
کوڈ کی وضاحت
یہ پہلی مثال اس بات کا ایک سادہ مظاہرہ ہے کہ millis() کیسے کام کرتا ہے۔ کوڈ سیریل مانیٹر کو ابتدائی کرتا ہے اور ایک لامحدود لوپ میں millis() کی ویلیو پرنٹ کرتا ہے۔
void setup() {
Serial.begin(9600);//سیریل مانیٹر کو ابتدائی کریں
Serial.println("Introduction to millis");
delay(2000);
}
void loop() {
Serial.println(millis());
}
setup() فنکشن 9600 باؤڈ پر سیریل کمیونیکیشن شروع کرتا ہے اور ایک خوش آمدید پیغام پرنٹ کرتا ہے۔ یہاں delay(2000) صرف مظاہرے کے لیے ہے تاکہ یہ دکھایا جا سکے کہ millis() پروگرام کے چلنے کے لمحے سے گنتی شروع کرتا ہے۔ loop() فنکشن مسلسل millis() کی موجودہ ویلیو پرنٹ کرتا ہے۔ جب آپ سیریل مانیٹر کھولتے ہیں، تو آپ دیکھیں گے کہ وقت ملی سیکنڈز میں تیزی سے بڑھ رہا ہے۔ یہ واضح کرتا ہے کہ millis() ایک کاؤنٹر ہے جو کبھی نہیں رکتا، جو آپ کے پروگرام کے لیے ایک مسلسل وقت کا حوالہ فراہم کرتا ہے۔
یہ بنیادی تعمیراتی بلاک ہے۔ ویڈیو میں، انسٹرکٹر دکھاتا ہے کہ اس ویلیو کو ایک مقررہ مدت کے بعد اعمال کو متحرک کرنے کے لیے کیسے استعمال کیا جائے، جیسے یہ چیک کرنا کہ آیا ایک مخصوص کوڈ بلاک کو چلانے سے پہلے 5000 ملی سیکنڈ (5 سیکنڈ) گزر چکے ہیں۔ یہ موجودہ millis() ویلیو کو ایک متغیر میں محفوظ کر کے اور پھر اسے مین لوپ میں موازنہ کر کے کیا جاتا ہے۔
map() فنکشن کا استعمال کرتے ہوئے فیصد ویلیو کے ساتھ LED چلانا سبق 14/31-4: Arduino کوڈنگ map() مثال 1 میں شامل ہے۔
لائیو پروجیکٹ مظاہرہ
ویڈیو میں، انسٹرکٹر یہ کوڈ اپ لوڈ کرتا ہے اور سیریل مانیٹر کھولتا ہے۔ آپ دیکھ سکتے ہیں کہ آؤٹ پٹ ابتدائی 2 سیکنڈ کی تاخیر کے بعد شروع ہوتا ہے، جو 1999 کے قریب ویلیو دکھاتا ہے۔ اس کے بعد نمبر تیزی سے بڑھتے ہیں، جو ملی سیکنڈز کی مسلسل گنتی کو ظاہر کرتا ہے۔ یہ لائیو ویو تصدیق کرتا ہے کہ فنکشن کام کر رہا ہے اور وقت کو کیسے ٹریک کیا جاتا ہے اس کی واضح بصری سمجھ فراہم کرتا ہے۔
اس ویڈیو سے متعلقہ پروجیکٹس
- سبق 14/31-2: Arduino کوڈنگ millis() مثال 2 ایونٹ کے ساتھ
- سبق 14/31-3: Arduino کوڈنگ millis() مثال 3 پش بٹن کے ساتھ
- سبق 14/31-4: Arduino کوڈنگ map() مثال 1
- سبق 14/31-5: Arduino کوڈنگ map() مثال 2
ابواب
- [00:00] millis() کا تعارف
- [01:19] millis() کیا ہے اور اسے کیوں استعمال کریں
- [03:06] millis() کا عملی مظاہرہ
- [05:46] وقت کے واقعے کو متحرک کرنے کے لیے millis() کا استعمال
- [08:29] پش بٹن کے ساتھ مثال
- [12:14] اعلی درجے کی پش بٹن ٹائمنگ مثال
- [17:20] map() فنکشن کا تعارف
- [19:47] LED کے ساتھ map() کے لیے کوڈ مثال
- [22:41] ایک حسب ضرورت map فنکشن بنانا
/*
Lesson 14/31: Arduino coding millis() example 1
Get this code and watch video Download and resource page https://robojax.com/RJT597
YouTube video https://www.youtube.com/watch?v=lqgzQohNiIM
* 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 download 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/>.
*/
/*
* Example-1 of using millis() with Arduino
* Written by Ahmad Shamshiri on July 27, 2019
* in Ajax, Ontario, Canada
* Watch video instructio for millis() :https://youtu.be/u2HsiTS8niQ
*/
void setup() {
Serial.begin(9600);//initialize serial monitor
Serial.println("Introduction to millis");
delay(2000);
}
void loop() {
Serial.println(millis());
}// loop end
Common Course Links
Common Course Files
آپ کو جن چیزوں کی ضرورت ہو سکتی ہے
-
ایمیزونSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
ایمیزون
-
ایمیزون
-
ایمیزون
-
ایمیزون
وسائل اور حوالہ جات
-
دستاویزاتDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
باہرونیPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
فائلیں📁
آرڈوینو لائبریریاں (زپ)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB