آردوینو آردوینو Arduino Uno آموزش آردوینو

آموزش آردوینو بخش هفدهم – استفاده کاربردی از تابع زمانی millis

arduino-basic-tutorial-part-sixteen-millis-function-digispark
نوشته شده توسط پریسا پوربلورچیان

اولین پروژه ای که هر نفر پس از شروع کار با آردوینو اجرا کرده است، پروژه ی چشمک زدن ال ای دی است که با استفاده از یک Delay تاخیر در برنامه ایجاد کرده و خروجی ال ای دی به مدت چند ثانیه یک بار چمشک می‌زند. اما اگر پس از گذشت چندین ماه بخواهیم یک برنامه نویسی چالشی تری داشته باشیم و سطح برنامه نویسی میکروها را افزایش دهیم، دیگر استفاده از Delay منطقی نخواهد یود. در این حالت به جای Delay بایستی از State Machine استفاده کنید. تابع millis یک تابع فوق العاده از کتابخانه های آردوینو است که به روش خودش تاخیر در برنامه ایجاد می‌کند. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

برد آردوینو uno بخش هفدهم آموزش برنامه نویسی - دیحی اسپارک

 


تابع millis و کاربرد


تابع millis() در آردوینو مدت زمان شروع به کار را محاسبه کرده و عدد را بر حسب میکروثانیه برمیگرداند. از زمانی که برق به آردوینو متصل شده است تا زمانیکه قطع ارتباط شود، این زمان محاسبه شده و در نهایت پس از ۴۹ روز سرریز Overflow خواهد شد. تا این مرحله برای ایجاد تاخیر در برنامه از این اصطلاح استفاده شده است که یک مدت زمان مشخص تاخیر ایجاد شوذ میتوانیم از چه مدت زمان سپری شده است استفاده کنیم تا برنامه ها را در سطح حرفه ای تری اجرا کنیم. به عنوان مثال یک تاخیر در برنامه با Delay به صورت نمونه کد زیر است.

 

در این برنامه یک تاخیر یک ثانیه ای برای اجرای هر بار دستور نوشته شده در Loop برنامه اعمال می‌شود. به عنوان نمونه یک ال ای دی LED به پایه شماره ۱۳ متصل شده است که هر یک ثانیه یک بار روشن HIGH و خاموش LOW می‌شود. اما اگر بخواهیم برنامه را millis اجرا کنیم و مدت زمان سپری شده در زمان روشن بودن و مدت زمان سپری شده در زمان خاموش بودن را مشخص کنیم دیگر Delay برای ما کافی نیست و بایستی از تابع دیگری یعنی millis استفاده کنیم. میلیس millis یک کتابخانه داخلی آردوینو است که مدت زمان شروع به کار برنامه را در آردوینو به ما برمیگرداند. برای استفاده از تابع میلیس millis بایستی آن را با متغیری دلخواه و نوع داده long در برنامه فراخوانی کنیم.

 

در این برنامه پس از اجرا در سریال مانیتور مدت زمان سپری شده پس از اتصال برق به آردوینو محاسبه شده و بر حسب میکروثانیه نمایش داده می‌شود.

سریال مانیتور تابع millis در آردوینو - دیجی اسپارک

 

در این مرحله اگر بخواهیم همان برنامه ی Blink را با millis() بنویسیم؟ باید چه کاری انجام دهیم؟ برای استفاده از تابع millis باید دو زمان حال و زمان سپری شده را در کد برنامه لحاظ کنیم. سپس با تکنیک کدنویسی ifelse در برنامه بایستی مشخص کنیم که آخرین باری که ال ای دی چشمک زده است چه زمانی بوده است و چه زمانی به روز رسانی می‌شود. به عنوان مثال اگر مدت زمان چشمک زدن را ۵ ثانیه یکبار در نظر بگیریم، برنامه بررسی می‌کند که آیا ۵۰۰۰ میلی ثانیه مد نظر سپری شده است یا خیر که اگر شده باشد، ال ای دی به مدت ۵ ثانیه روشن است و دوباره به وضعیت قبل بازمیگردد. با سپری شدن هر ۵ ثانیه شرط برنامه صحیح شده و ال ای دی چشمک خواهد زد.

 

تابع millis در برد آردوینو Uno - دیجی اسپارک

 

در این برنامه از millis, Premillis, Currentmillis برای محاسبه مدت زمان سپری شده برای روشن بودن و مدت زمان سپری شده برای خاموش بودن استفاده خواهیم کرد. سپس در ifelse یک شرط مینویسیم به این صورت که اگر اختلاف بین زمان حال و زمان سپری شده از زمان تاخیر بزرگتر باشد، تغییرات را در خروجی ال ای دی اعمال کند.

 

کد برنامه همراه با کامنت فارسی در اختیار شما قرار گرفته شده است تا بتوانید هر حط از برنامه را تحلیل کنید. با توجه به اینکه خروجی در این برنامه یک ال ای دی است، یک متغیر برای وضعیت ال ای دی در برنامه مشخص شده است، در صورتی که مدت زمان سپری شده در آردوینو از ۵ ثانیه بیشتر بود، وضعیت ال ای دی اگر خاموش باشد، روشن شده و به همان میزان زمان ۵ ثانیه روشن بماند،در غیر اینصورت غیرفعال شود. منظور از ledstate همان متغیر برای وضعیت ال ای دی است که چه زمانی LOW و چه زمانی HIGH است و در صورت LOW بودن، اگر بازه های زمانی برقرار باشد، HIGH شده و در غیر اینصورت غیرفعال است.در نهایت بایستی تغییرات را به صورت سخت افزاری هم مشاهده کنیم که از یک digitalWrite استفاده خواهیم کرد.

 

برای استفاده از تابع millis نیاز به تمرین تکرار و نوشتن الگوریتم برای روند کار در برنامه خواهید داشت. در کارگاه های آردوینو مثال های متعددی برای اجرای milllis و استفاده از آن آموزش خواهیم داد.

 


وسایل مورد نیاز


برد آردوینو Arduino UNO

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۰ دیدگاه