یک برنامه با آردوینو میخوام بنویسم که 6 ساعت یک خروجیش فعال بشه و 18 ساعت غیرفعال لطفا یک راهنمایی به من کنید
اطلاعیه
Collapse
No announcement yet.
تایمر با تاخیر طولانی
Collapse
X
-
پاسخ : تایمر با تاخیر طولانی
نوشته اصلی توسط حمید حمید نمایش پست هاسلام
راستش منم این سوال را دارم که اصلا ایجادتاخیر مثلا delay(21600000); یا بقول شما 6 ساعته اصلا در برنامه ساعت برای HIGH نگه داشتن یک خروجی صحیح هست یا خیر؟
اگه نه راه صحیحش چیه؟
فکر نمیکنم با تابع delay این کار شدنی باشه. اگر هم شدنی باشه اصلا عقلانی نیست! چون هم دقت کمی داره، هم پردازنده رو بی جهت مشغول میکنه و باعث اتلاف توان و یک سری مسائل دیگه میشه. معمولا برای تاخیرهای زیاد از تایمر استفاده میکنن که دقت خوبی داشته باشه. اگر مدت انتظار زیاد باشه و توی مدت انتظار پردازنده کار دیگه ای برای انجام نداشته باشه، از مدهای sleep برای کاهش مصرف توان استفاده میکنن.
دیدگاه
-
پاسخ : تایمر با تاخیر طولانی
نوشته اصلی توسط hossein.m98 نمایش پست هاسلام
فکر نمیکنم با تابع delay این کار شدنی باشه. اگر هم شدنی باشه اصلا عقلانی نیست! چون هم دقت کمی داره، هم پردازنده رو بی جهت مشغول میکنه و باعث اتلاف توان و یک سری مسائل دیگه میشه. معمولا برای تاخیرهای زیاد از تایمر استفاده میکنن که دقت خوبی داشته باشه. اگر مدت انتظار زیاد باشه و توی مدت انتظار پردازنده کار دیگه ای برای انجام نداشته باشه، از مدهای sleep برای کاهش مصرف توان استفاده میکنن.
دیدگاه
-
پاسخ : تایمر با تاخیر طولانی
نوشته اصلی توسط Jafar mo نمایش پست هااز تایمر شماره یک استفاده کنیم یا دستور millis
دیدگاه
-
پاسخ : تایمر با تاخیر طولانی
یک مسئله دیگم هست که من تو برنامه از watchdog میخواهم استفاده کنم که حداکثر 8 ثانیه میتونه delay و یا timer را تحمل کنه و بعد میکرو ریست میکنه
البته یک راحل براش دیدم و اون اینکه یک حلقه for یک ثانیه ای درست کنم بعد توش هی watchdog را صفر کنم.
اساتید عزیز راهنمایی بفرمایند.
اینم برنامه بنده
در خط 369 و 402 delay را تعریف کردم برای high نگه داشتن خروجی، که اصلا راه مناسبی نیست
دیدگاه
-
پاسخ : تایمر با تاخیر طولانی
سلام
این مسئله با چند خط دستور زیر در برنامه به خوبی حل شد.
#include "Timer.h" //[URL]https://github.com/JChristensen/Timer[/URL]
Timer Ti1;
Timer Ti2;
.
..
Ti1.pulseImmediate(RELAY_Temp1, A1_delay * 60 * 1000UL, LOW);
Ti2.pulseImmediate(RELAY_Hum2, A2_delay * 60 * 1000UL, LOW);
.
.
.
Ti1.update();
Ti2.update();
دیدگاه
دیدگاه