کوڈ تلاش کریں

سبق 14/31-1: آرڈوینو ملیس (بغیر تاخیر) اور میپ فنکشنز | سن فاؤنڈر روبوجیکس

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

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

ابواب

  • [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 فنکشن بنانا

تصاویر

Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
916-Lesson 14/31-1: Arduino coding millis() example 1
زبان: C++
/*
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

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

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

فائلیں📁

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