دستور delay در آردوینو (ایجاد تاخیر در برنامه)

دستور delay در آردوینو برای ایجاد تاخیر در برنامه استفاده میشود.
برنامه را برای مدت زمان تعیین شده (بر حسب میلی ثانیه) که به عنوان پارامتر مشخص شده متوقف می کند. (در هر ثانیه 1000 میلی ثانیه وجود دارد)
دستور delay
delay(ms)
- ms: به جای ms مدت زمان تاخیر مورد نیاز را وارد میکنیم.
به طور مثال اگر میخواهید برنامه 2 ثانیه متوقف شود، باید دستور را به شکل delay(2000)
بنویسید.
نمونه کد با دستور delay
کد زیر پین 13 را روشن و خاموش (Toggle) میکند. در این کد از دستور digitalWrite استفاده میشود.
void setup() { pinMode(13, OUTPUT); // تنظیم پین دیجیتالی 13 در حالت خروجی } void loop() { digitalWrite(13, HIGH); // HIGH کردن پین دیجیتالی 13 delay(1000); // تاخیر به مدت 1 ثانیه digitalWrite(13, LOW); // LOW کردن پین دیجیتالی 13 delay(1000); // تاخیر به مدت 1 ثانیه }
نکات:
راه اندازی پروژه LED چشمک زن در آردوینو با دستور delay آسان است. بسیاری از پروژه ها شامل تاخیر های کوتاه هستند. اما استفاده از delay مشکلات قابل توجهی ایجاد میکند. به طور مثال در زمان تاخیر، هیچ اطلاعاتی از سنسور ها دریافت نمیشود و محاسبات ریاضی یا … انجام نمیشود. بنابراین دستور delay به طور کامل فعالیت های دیگر را متوقف میکند. برنامه نویسان حرفه معمولا از دستور delay برای تاخیر های بیشتر از 10 میلی ثانیه استفاده نمیکنند مگر اینکه پروژه بسیار ساده باشد.
البته برخی کار ها در حین اجرای دستور delay انجام میشوند، مثل وقفه ها، ارتباط سریال پین RX، سیگنال PWM و …
دستورات مرتبط:
سلام ببخشید برای تاخیر ساعتی میتوان این مقدار را وارد نمود delay(3600000)
سلام چرا باید بین دستورات AT باید از delay استفاده کنیم، چه راه حل یا راهکاری برای این مورد وجود داره؟, سپاس
سلام عزیز
دستورات AT چه ماژولی مد نظرتان هست؟
اصولا در صورتی تاخیر قرار داده میشود که منتظر پاسخ باشیم یا عملیاتی در ماژول انجام شود که کمی زمان ببرد (حتی کمتر از یک ثانیه)
مهندس یک سوال ایا امکان ایجاد تاخیر های ساعتی و طولانی استفاده از delay امکان پذیره یا نه ؟
لطفا راهنمایی بفرمایید
سلام عزیز
اگر فقط از یک delay استفاده کنید با نوع داده unsigned long با یک میکروکنترلر 8 بیتی، حدودا 18 ساعت میشه که میتونید با برنامه نویسی چندین 18 ساعت پشت سر هم داشته باشید. و اگر از میکروکنترلر 16 بیتی استفاده کنید حداکثر زمان با یک delay به 49 روز میرسه
با درود ، مهندس جان یه برنامه نوشتم مقایسه گر – میخواهم برای فعال شدن خروجی یکیشون ، یه زمان 10 ثانیه ای بگذرد بعد خروجی 1 شود . طوری که در لوپ برنامه اثر نگزارد . لطفا راهنمایی کنید .
if((meas_volt +20) > SetPoint)
{
digitalWrite(OUT_LOW,HIGH);
}
else
{
digitalWrite(OUT_LOW,LOW);
}
=================== اینجا ===========================
if(digitalRead(6) == LOW && digitalRead(7) == LOW) =
{
digitalWrite(OUT_OK,LOW);
}
else
{
digitalWrite(OUT_OK,HIGH);
}
سلام عزیز، از تابع millis استفاده کنید