اولین پروژه هایی که برای شروع کار با آردوینو آغاز میکنید، از ساده ترین دستورات آغاز میشود. مانند روشن و خاموش کردن یک ال ای دی، ارسال و دریافت یک پیام در سریال مانتیور و یا اجرای یک چراغ چشمک زن با آردوینو; در همان برنامه نویسی از توابع تاخیر در برنامه برای ایجاد زمانبندی بین ورودی و خروجی ها و فعال و غیرفعال شدن آن ها استفاده میکنیم. در بخش دهم توابع زمانی مورد نیاز برای کدنویسی در آردوینو را فراخواهیم گرفت. توابع مهمی مانند Delay, delayMicrosecond. micros, millis که تاخیر زمانی در برنامه نویسی و اجرای برنامه را ایفا میکنند. در ادامه با مرجع تخصصی آردوینو، به زیان فارسی دیجی اسپارک همراه باشید.
تابع زمانی ()delay
تابع زمانی delay برنامه را بر حسب یک بازه ی زمانی ( میلی ثانیه) متوقف میکند. استفاده از Delay بسیار ساده است و بایستی مدت زمان تاخیر در برنامه را بر حسب میلی ثانیه در برنامه نویسی آردوینو مشخص کنید.
کاربرد Delay
- خاموش و روشن شدن ال ای دی ها در طی یک بازه ی زمانی
- کنترل سرو موتور و چرخش زاویه
روش فراخوانی
delay(ms)
به جای ms عددی بر واحد میلی ثانیه نوشته میشود.
نمونه کد آردوینو تست delay
int ledPin = 13; // ال ای دی به پایه شماره ۱۳ دیجیتال آردوینو وصل شده و با یک متغیر به پایه شماره ۱۳ نسبت داده شده است void setup() { pinMode(ledPin, OUTPUT); // تعریف ال ای دی به عنوان خروجی } void loop() { digitalWrite(ledPin, HIGH); // فرمان روشن شدن ال ای دی delay(1000); // برای یک ثانیه توقف ایجاد میشود digitalWrite(ledPin, LOW); // فرمان خاموش شدن ال ای دی delay(1000); //برای یک ثانیه توقف ایجاد میشود. }
تابع زمانی ()Delaymicroseconds
تابع زمانی delaymicroseconds برنامه را بر حسب یک بازه ی زمانی ( میکروثانیه) متوقف میکند. از این تابع برای ایجاد تاخیر در برنامه بر حسب میکروثانیه استفاده میشود.
روش فراخوانی
delayMicroseconds(us)
به جای us عددی بر واحد میکرو ثانیه نوشته میشود.
نمونه کد آردوینو delaymicroseconds
int outPin = 13; // انتخاب یک پایه برای دیجیتال و نسبت دادن به یک متغیر void setup() { pinMode(outPin, OUTPUT); // تعریف پایه بر حسب خروجی } void loop() { digitalWrite(outPin, HIGH); // فعال شدن پایه خروجی delayMicroseconds(50); // توقف به مدت ۵۰ میکروثانیه digitalWrite(outPin, LOW); // غیرفعال شدن پایه خروجی delayMicroseconds(50); // توقف به مدت ۵۰ میکروثانیه }
تابع زمانی ()micros
تابع micros یک عدد بر واحد میکروثانیه را تا زمانیکه برنامه در حال اجرا بر روی آردوینو است، برمیگرداند. این عدد پس از ۷۰ دقیقه به صفر میرسد.تابع micros() در آردوینو برای خواندن مقدار زمان به واحد میکروثانیه (microseconds) از زمانی که آردوینو روشن شده یا بازنشانی شده است، استفاده میشود. این تابع به شما امکان میدهد تا زمان گذشته از زمان روشن شدن یا بازنشانی آردوینو را به دقت میکروثانیه مشاهده کنید.در این مثال، ما از micros() برای اندازهگیری زمان گذشته از زمانی که آردوینو روشن شده استفاده کردهایم و این زمان را به واحد میکروثانیه روی سریال مانیتور نمایش میدهیم. توجه داشته باشید که مقدار خروجی micros() به صورت unsigned long باشد، زیرا ممکن است زمان زیادی طول بکشد تا این مقدار به حداکثر مقدار خود برسد و منفی نشود.
time = micros()
نمونه کد آردوینو تست micros
unsigned long time; void setup() { Serial.begin(9600); } void loop() { Serial.print("Time: "); time = micros(); Serial.println(time); //از زمانی که برنامه شروع به اجرا شدن میکند،زمان را نمایش میدهد. delay(1000); // تاخیر به مدت یک ثانیه }
تابع زمانی ()millis
تابع millis زمان شروع برنامه را مشخص میکند. این زمان بر حسب میکروثانیه است. تابع millis() در آردوینو برای خواندن مقدار زمان به واحد میلیثانیه (milliseconds) از زمانی که آردوینو روشن شده یا بازنشانی شده است، استفاده میشود. این تابع به شما امکان میدهد تا زمان گذشته از زمان روشن شدن یا بازنشانی آردوینو را به دقت میلیثانیه مشاهده کنید.در این مثال، ما از millis() برای اندازهگیری زمان گذشته از زمانی که آردوینو روشن شده استفاده کردهایم و این زمان را به واحد میلیثانیه روی سریال مانیتور نمایش میدهیم. توجه داشته باشید که مقدار خروجی millis() به صورت unsigned long باشد، زیرا ممکن است زمان زیادی طول بکشد تا این مقدار به حداکثر مقدار خود برسد و منفی نشود.
time = millis()
نمونه کد آردوینو تست millis
unsigned long myTime; void setup() { Serial.begin(9600); } void loop() { Serial.print("Time: "); myTime = millis(); Serial.println(myTime); // نمایش زمان پس از اجرا شدن برنامه delay(1000); // توقف به مدت ۱ ثانیه }
جمع بندی لیدی پای
استفاده از توابع زمانی در برنامه نویسی آردوینو وابسته به نیاز برنامه است. زمانی که بخواهیم یک ورودی و یا خروجی طی بازه های زمانی مشخص فعال و غیر غعال شود، زمان بندی متغیر در برنامه داشته باشیم. در این بخش چند توابع زمانی کاربردی و پرتکرار در برنامه نویسی آردوینو را یاد گرفتیم که میتوانید بنا بر بازه ی زمانی مورد نیاز از هر یک در کدنویسی استفاده کنید. روش فراخوانی بسیار ساده است و حتی میتوانید یک متغیر جداگانه برای تعریف بازه ی زمانی در آردوینو تعریف کنید.
برای بخش بندی کامل مطالب ممنونم.هیچی به اندازه millis سخت نیست :))
سلام
سپاس از همراهی شما کاربر گرامی بله مبحث millis کمی پیجیده است که ما سعی میکنیم در کارگاه های arduino به ساده ترین روش ممکن آن را یاد بگیریم.
سلام
برای یادگیری کار با millis چه پروزه یا آموزشی رو پیشنهاد میکنید>
با سلام آموزش زیر را مطالعه کنید.
https://digispark.ir/arduino-basic-tutorial-part-sixteen-millis-function/
سلام
لطفا یک پروژه با میلیس اجرا کنید
با سلام
کاربر گرامی لینک زیر را مشاهده کنید.
پروژه ساخت چراغ مطالعه
ممنونم از توضیحات شما
سپاس از همراهی شما کاربر گرامی
جمع و جور و کاربردی
با سلام
کاربر گرامی سپاس از همراهی شما
امیدوارم مفید واقع شده باشد.
سلام
برای اجرای پروژه چطور باید millis , micros را در کد فراخوانی کنیم؟
با سلام
همانطور که در متن آموزش نوشته شده است، کافی است آن را فراخوانی در یک متغیر با اسم دلخواه و نوع داده را long درنظر بگیرید.
سلام مهندس
برای تست پروژه بین delay و millis کدوم رو پیشنهاد میکنید؟
با سلام
قطعا بایستی از millis استفاده کنید.
سلام مهندس تفاوت micros با millis چیه؟؟؟؟؟؟؟؟
با سلام
یکسان هستند اما micros روزلوشن بالاتری دارد.
با سلام
برای millis دیگه نمیشه delay استفاده کرد؟
با سلام
عملکرد این دو متفاوت است و میتوانید برای هر دستور به نیاز از delay هم استفاده کنید.
تست هر کلاس زمانی با مثال عالی بود ممنونم در وقتم صرفه جویی شد
با سلام
کاربر گرامی سپاس از همراهی شما
سپاس فراوان
با سلام
کاربر گرامی سپاس از همراهی شما
سلام
در کداها استفاده از millis را پیشنهاد میکنید یا delay?
با سلام
قطعا استفاده از MILLIS پیشنهاد میشود.
کامل و خلاصه
ممنونم
سپاس از همراهی شما کاربر گرامی