کد زیر رو ببینید :
کد:
Unsigned long interval, time;
Bool condition = false;
Void loop()
{
If (condition)
{
Time = millis();
If (time > interval)
{
// Do something
Interval = times + 20;
}
}
}
تو نمونه کد بالا، شرط کاندیشن فقط برای اینه که شما هر زمان که نیاز داشتید، توسط یه تابع دیگه (مثلا یه دکمه یا یه قسمت از برنامه) شرط کاندیشن رو true کنید و بعد از اون دستگاه شروع میکنه به انجام کار هر 20 میلی ثانیه یه بار
روند کار اینطوره (فرض میکنیم الان کاندیشن true شده و کد میخواد اجرا بشه)
در ابتدای کد(توی لوپ) ، متغییر اینتروال 0 هست و متغییر تایم، هر بار میشه معادل زمان کنونی (زمانی که از شروع میکرو گذشته). به عنوان مثال فرض میکنیم 25 میلی ثانیه هست. یعنی زمانی که ما متغییر کاندیشن رو ترو کردیم، 25 میلی ثانیه از شرو میگذره و هی افزایش هم پیدا میکنه.
در لحظه ی ترو کردن کاندیشن : تایم = 25 میلی ثانیه، اینتروال = 0. شرط بررسی میکنه که تایم بیشتر از اینترواله ؟ آره هست. پس کد شما برای بار اول اجرا میشه و مقدار اینتروال میشه تایم + 20 یعنی 45 .
12 میلی ثانیه بعد به طور مثال : تایم = 37 میلی ثانیه ، اینتروال = 45 ، شرط اجرا نمیشه
20 میلی ثانیه بعد ، تایم شده 45 ، اینتروال هم 45 ، شرط اجرا میشه ، اینتروال میشه 65
دوباره همینطور هر 20 میلی ثانیه، شرط شما داره اجرا میشه