به نام خدا : تو این مطلب از آموزش آردوینو میخام به مبحث تایم مایم بپردازم.(البته با اون تایمری که فک میکنی یکم فرق داره )
Delay : خوب وای بحالتون اگه ندونید کاربرد این تابع چیه؛ آنچنان پوستی از سرتون بگنم که »»»» این تابع کارش تولید زمان هستش، من بهش میگم تابع تولید تاخیر زمانی، هر جای برنامه اینو قرار بدین برنامه به اندازه مقداری که بهش دادین صبر میکنه و برنامه رو متوقف میکنه، مثلا برا روشن و خاموش کردن هر ۱ ثانیه یک بار یه led باس از این تابع استفاده کنیم، بیشتر از این توضیح نمیدم چون شونصدتا تا حالا پروژه انجام دادیم و تو همشون تقریبا از این تابع استفاده کردیم.(ولی با اگه سوال بود در خدمتیم
) >>> به جای ms عددمون رو قرار میدیم.
1 |
delay(ms); |
برای این تابع مثال نمیگم ولی میتونید لینک مقابل رو ببینید که توش یه مثال هستش : DELAY
delayMicroseconds : این تابع هم مثل تابع بالاس فقط با این تفاوت که تابع بالا بر حسب میلی ثانیه تاخیر ایجاد میکنه و این تابع بر حسب میکرو ثانیه؛ (این تابع در رنج ۳ میکرو به بالا کار میکنه و زمان های کمتر رو نمیتونه تولید کنه»»» فک کنم درست گفتم )
Millis : خوب این تابع کارش شمارش زمان (از وقتی که آردوینو شروع به کار میکنه تا تقریبا ۵۰ روز که بعد سر ریز رخ میده و صفر میشه) هستش، وخروجیش بر حسب میلی ثانیه هست، متغییری که قراره مقدار این تابع درش ذخیره بشه باس از نوع unsigned long باشه.(که اگه دلیلش رو ندونید جفت پا میرم تو صورت خودم ) ؛ این تابع به صورت زیر هستش.
Micros : این تابع هم مثل تابع بالا هستش تقریبا، فقط این که زمان رو بر حسب میکرو ثانیه محاسبه میکنه و ارسال میکنه و این که تقریبا به مدت ۷۰ دقیقا شمارش رو انجام میده و بعد سر ریز (overflow) رخ میده و مقدارش صفر میشه؛ متغییری که قراره دیتایی این تابع درش ذخیره بشه بهتره که از نوع unsigned long باشه.
اینم یه مثال ( پروژه آردوینو ) از دو تابع بالا، این برنامه از زمان اجرای برنامه شروع به محاسبه زمان میکنه(مثل یه کورنومتر) و به پورت سریال رسال میکنه هر ۱ ثانیه ۱ بار این زمان محاسبه شده رو.
برنامه رو تو آردوینو پروگرام کنید و برنامه سریال مانیتور(تو منوی آردوینو>> tools >>> serial monitor) و نتیحه رو ببینید.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
unsigned long time_m,time_u; void setup() { Serial.begin(9600); } void loop() { Serial.print("Time : "); time_m = millis(); time_u = micros(); Serial.print(time_m);Serial.print('\t');Serial.println(time_u); delay(1000); } |
بازم میگم, دوستان هر موقع هرجا و… سوال داشتین جایی رو متوجه نشدید حالا به هر دلیلی حتما بپرسید.
این کوتاه ترین مطلب از این سری از آموزشها هستش فک کنم ، به نظرم اگه از کوتاه بودنش خوشهالید یعنی به اجبار دارید یاد میگیرد ولی اگه ناراحت با علاقه داربد یاد میگیرید(درست میگم؟؟؟)
هزینه مطلب فراموش نشه.(یه فاتحه برا کسایی که از دنیا رفتن ؛ ۳ تا صلوات برا ظهور آقا و شادی روح شهدا و امام شهدا و سلامتی رهبر)
سرتون رو درد نمیارم فعلا یا علی.
جنگ ما فتح قدس را در پی خواهد داشت (امام خمینی) >>>>>> اگر از صدام بگذریم، اگر مسأله قدس را فراموش کنیم، اگر از جنایت های امریکا بگذریم از آل سعود نخواهیم گذشت. انشاالله اندوه دلمان را را در وقت مناسب با انتقام از امریکا و ال سعود برطرف خواهیم کرد و داغ و حسرت حلاوت این جنایت بزرگ را بر دلشان خواهیم گذاشت و با برپایی جشن پیروزی حق بر جنود کفر و نفاق و آزادی کعبه از دست نااهلان و نامحرمان به مسجد الحرام وارد خواهیم شد (امام خمینی)
فعلا دارم رو USB و میکرو LPC کار میکنم، 3 تا موضوع مطرح هستش ( که تو ذهنمه هر3شو برم ) :
1) میکرو در نقش Device ( فعلا محوریت کار من این مورد هستش )
2) میکرو در نقش Host
3) میکرو در نقش OTG
و باز 2 تا موضوع مطرح هستش، برا راه اندازی usb دو تا راه داریم ( که تو ذهنمه هر2شو برم ) :
1) استفاده از میکروکنترلر ( فعلا محوریت کار من این مورد هستش که از LPC1768 استفاده میکنم )
2) استفاده از آیسی های مختص اینکار.
فعلا کارم با دیتاشیت usb تموم شده، دارم کلاس های usb رو مطالعه میکنم، کلاس cdc رو ماستمالی کردیم و یه پروژه ازش منتشر کردیم، الان رو کلاس HID ریز شدم و دارم مطالعه میکنمش و پروژه ازش میزارم تو سایت.
جزئیات داستان رو در لینک زیر میتویند ببینید :
===
به علت اثطغبال بیش از حد دوستان از موضوع usb؛ فعلا یکم سرگرم طراحی قالب جدید سایت شدم ^_^
مرسی دوست عزیز
من با مقدار دهی رجیستر های تیمر یک تایمرمو راه اندازی کردم ک تو برناه از اینتراپ استفاده میشه
ب خاطر این از مقدار دهی رجیستر ها استفادده کردم ک میشه ریستش کرد
این تابع millis رو چطور میشه ریستش کرد؟
من ی برنامه با این millis نوشتم که زمان رو روی lcd نشون میده و میتونه زمان رو نگه داره
اما نتونستم ریستش کنم
پروژت چیه؟
واس چی میخوای ریستش کنی ؟
در ضمن طبق گفته ی سایت آردوینو

attachInterrupt()
Inside the attached function, delay() won’t work and the value returned by millis() will not increment
سلام خسته نباشین لطفا درباره انتقال تصویر دوربین کمی صحبت کنید میشه با ماژول بلوتوث تصویرو انتقال داد؟
سلام
فعلا فکرم تو تکمیل آموزش آردوینو هستش
بستگی به میزان انتقال داده ماژول و میزان دیتای تصویر بستگی داره……..میشه ولی باس اینا رو چک کنی
سلام
عیدتون مبارک
من ی سایت پیدا کردم که گفته چطور تابع millis رو ریست کنیم
گفته زمان سپری شده رو از اون کم کنیم
اینم آدرس سایتش
https://www.baldengineer.com/arduino-how-do-you-reset-millis.html
ولی من متوجه نشدم چی گفت
میشه شما توجه بشید و ب منم بگید؟
سلام
گفتم که…هر موقع به ماکزیمم خودش برسه سر ریز رخ میده
این سایته هم که میگه نمیشه ریست کرد
اومده کلک رشتی زده
مثلا ما میخوایم هر ۱ ثانیه ۱ بار led رو روشن خاموش کنیم میایم و از کد اول اون سایته استفاده میکنیم
که زمان جاری رو میریزه تو currentMillis و مقدار زمان قبلی رو توی previousMillis میریزیم که مقدار اولیش صفر هستش و هم موقع تفریق این دو تا از ۱۰۰۰ بیشتر میشه مقدار previousMillis با ۱۰۰۰ جمع میشه و میریزه داخل previousMillis >>>>> لذا هر دفه previousMillis مقدارش ۱۰۰۰ تا بیشتر میشه و مقدار currentMillis هم که در بالا گفتیم ریست نمیشه لذا با تفریق کردن یه جورایی عمل ریست کردن رو انجام میدیم.
نمیشه من مقدار زمان گذرانده شده رو در یک متغیر بریزم بعد اون متغیررو صفر کنم؟
معلومه…نه

چون وقتی دوباره بعد از ۰ کردن زمان رو بخوای بخونی دوباره همون آش و همون کاسه
همون تفریق کردن بهتره
نگفتی برا چه کاری به این تابع نیاز داری
چون من تابع دیدم واس محاسبه زمان که شروع و توقف هم داره…..اون شاید بهتر باشه
آقا مهدی سلام مجدد، این توابع که فرمودید برای محاسبه زمان ( که شروع و توقف هم داره ) کدوم تابع است؟
سلام
خاطرم نیست…
تفریق فقط برای یک زمان خاص خوبه
من دقیقا یک تایمر میخوام که وقتی یک دمه رو فشار بدم آخرین زمان رو به من نشون بده و وقتی دکمه دم رو فشار میدم دوباره از صفر شروع کنه به شمردن
اون تایمری که یا مقدار دهی رجیستر ساخته بودم میدونم جرا lcd وقتی میخواد نشونش بده صفحه میپره! اما با تابع millis که نوشتم قشنگ نشون داد
من اون برنامه ای رو که نوشتم بهتون ایمیل میکنم( البته اگ ایمیلتون تو سایته)
راستی شما راجع به راه انازی wtv چیزی میدونید؟
اطلاعی ندارم
تو نت بسرچ….من یه تابع دیدم…اسمش خاطرم نیست دقیقا
سلام مهندس، این تابع Millis ذمان دقیق برمی گردونه یعنی ۱ ثانیه در این تابع دقیقا یک ثانیه است؟
سلام
تو سایت آردوینو چیزی درباره دقت این تابع من یادم نمیاد که نوشته شده باشه…
سلام آقا مهدی مثل همیشه Like
سلام
ببخشید من تو قسمت سریال مانیتور مشکل دارم
هر برنامه ای را که پروگرام میکنم و بعدش سریال مانیتور را که میزنم با این پیغام مواجهه میشوم
Arduino: 1.6.9 (Windows 7), Board: “Arduino/Genuino Uno”
Board at COM1 is not available
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
سلام
قبل پروگرام کردن برنامه باید :
1) مدل بوردت رو از منو TOOLS و بعد BOARD انتخاب کن
2) شماره پورتی که از طریقش با آردوینو قراره ارتباط برقرار کنیم رو از طریق TOOLS و بعد PORT انتخاب کن.
الان شما پورت رو اشتباه انتخاب کردی – باید پورتی رو انتخاب کنی که علاوه بر نام پورت اسم آردوینو هم کنارش باشه
سلام مهندس
میخوام یه کاری هر یک ساعت یکبار انجام بشه…باید چی کار کنم
سلام
از تابع Millis استفاده کن!
سلام چطوری ؟ میشه بیشتر توضیح بدید ممنون میشم
سلام مجدد – البته نمیدونم این تابع فوق سر چه زمانی سرریز میکنه – تو این مطلب اگه نگفته بودم یاید بری سایت آردوینو یا بری تو کتابخونه اش و بررسیش کنی.
مقدارشو الان میخونی = x
بعد مقدار هر موقع زمان الان – x از ۱ساعت بیشتر شد کارتو انجام میدی.
سلام
تشکر آقا مهدی آموزش این جلسه هم با این که کوتاه بود خیلی خوب بود
موفق باشی
خیلی مردی
سلام
با سپاس از زحماتتون
ما میتونیم اختلافه زمانه شمارده شدرو متغییر استاتیک تعریف کنیم ؟
سلام-متغییر استاتیک یه بار مقدار اولیه میگیره – در کل برنامه قابل تغییر هستش(تغییر کنه مقدار اعمال میشه) و باید بشه – تست کن – فوقش نمیشه دیگه
سلام بخوایم برحسب ثانیه و ساعت نشون بده چیکار کنیم؟؟
سلام بخوایم برحسب ثانیه و ساعت نشون بده چیکار کنیم؟؟
سلام-۳تا متغیر تعریف کن – ثانیه – دقیقه – ساعت –
زمان رو توشون برید – یکم ضرب و تقسیمه
میشه چند تا تایم با هم اجرا کرد
در کل بله ولی با این کتابخونه های آماده نمیدونم – باید تست کنی
salam mohandes,,,chetori mishe ba in tavabe i ke gofti biaym be micro begim to ye modat zaman moayyan ke kare khasi bokone??masalan begim yek sanie bia o in ledpin13 ro khamoosh roshan kon hala ba ye delay khas ya masalan begin nim sanie nemune begir o befrest ro serial plotter???
سلام
کد زیر رو ببین – به جای اون توضیحات کد مد نظرتو بزار
http://paste.debian.net/plain/931534
باسلام و تشکر از زحماتتون
یه پروژه کار با سنسور IR دارم می خوام فاصله بین دو بار یک شدن حاص از خواندن سنسور رو اندازه بگیره میشه راهنمایی کنید
سلام
فاصله بین دو لبه rising ? مطلب راه اندازی srf05 رو بررسی کن.
سلام چه طوری میتونم یه تایم خاص به یک کد بدم؟؟
مثلا یه ما/ژول داره دایم از یک سایت ۱ رو دریافت میکنه با تاخیر ۲ ثانیه ..
دستور ۰ ارسال میشه از همون ای پی و مثلا یک led خاموش میشه. حالا من میخوام بدونم که ایا میشه وقتی مازول ۰ رو دریافت کرد مثلا ۱۰ ثانیه صبر کنه و ببینه ایا ۲ ثانیه بعدی ۱ هست یا نه؟؟ اگه ۱ بود که صفر رو اجرا نکنه ولی اگه بازهم صفر دریافت کرد انگاه دستور خاموش شدن led رو بده؟؟؟
همچین چیزی هست ایا؟؟؟
سلام
بله میشه همیچی کاری رو کرد – شما بعد از این که ۰ رو گرفتی مقدار time رو بخون – و بعد یه دستور شرطی بزار – که اگه زمان بررسی شده از زمان مد نظرت بیشتر شد – کار مد نظرت رو انجام بده….
با سلام
آیا می شود مقدار Bouncing time که از فشرده شدن کلید اعمال می شود را از طریق آردیونو محاسبه کرد و شکل موج آن را در کامپیوتر نمایش داد.
برای توضیح یک مثال می زنم : من می خواهم زمانی که یک کلید فشرده شد میزان Bouncing time آن حداکثر به میزان ۱۰ میکرو ثانیه محاسبه شود و شکل موج کلی تمام فشرده شدن های کلید (که می تواند بیش تر از یک بار و در بازه های زمانی مختلف فشرده شده باشد) در کامپیوتر نمایش داده شود.
سلام خسته نباشید .. یه سوال داشتم . حالا اینو آپلودش کردم تو آردینو ، serial monitor هم نتیجه رو دیدم .. حالا چجوری میشه مثلا اینو توی سون سگمنت دید ؟!؟
سلام
خو تو گوگل راه اندازی سون سگمنت با آردوینو رو بسرچ و نحوه کارشو یاد بگیر.
سلام اگه بخوایم توی یک بازه زمانی یک کار انجام بشه چطوری باید کد بنویسیم؟
مثلا بعد از فشردن پوش باتون متغیر ایکس که اعداد خوانده شده از پین آنالوگ هست رو توی ده ثانیه بخونه و هروقت مقدارش از ۱۰۰ بیشتر بود میانگین(اعدادی که توی این ده ثانیه از ۱۰۰ بیشتر بودن با هم جمع کنه تقسیم بر تعداد کنه) بگیره و بریزه توی تابع ایگرگ
سلام
به نظرم کد نویسی ++C رو برید بخونید کامل و بعد مطلب آردوینو و از جلسه اول شروع کنید و از مطالب توی نت هم استفاده کنید.
سلام من یکم سوالم فرق داره
من میخوام این کارا داخل قسمت ستاپ انجام بدم ن قسمت لوپ
ظاهرا جواب نمیده؟!میشه ی راهنمایی کنین(از طریق ایمیل با خبر شیم)
سلام
کدوم کارا؟
میخوای دقیقا چیکار کنی؟ بگو تا راهنماییت کنم.
اوکی شد این تایمر دقیقا کدوم تایمره میکرو میشه؟تداخل نداره؟!!!
باید کتابخونه آردوینو رو بررسی کنی – دقیقا نمیدونم از کدوم تایمر استفاده میکنه – به هر حال اگه ریسجتراشو دستکاری کنه ممکنه به مشکل بخوره پروژه.
سلام من چندبار سوالمو پرسیدم ولی جواب ندادید ممنون میشم این دفعه جواب بدید
من می خوام تو یه بازه زمانی ۱ثانیه ای چندتا پین دیجیتالو ۱ کنه یعنی اینکه توی یه چرخه باشه برنامه تا وقتی ک ۱ ثانیه تموم شه هی توی اون چرخه بچرخه و بعد ۱ ثانیه از چرخه خارج شه چه کنیم استاد?
اقا این چیه خط اخر قرار دارید بعد سریال پریتت
(‘t\’)
تب..حدود ۲ الی ۴ تا space
سلام
من یک مدار دارم که شستی داره و فرمان به میکرو میده اما یک جا میخام اگه دست یکسره روی شستی تا 10 ثانیه بود میکرو بفهمه و یک فرمانی بده
لطفا راهنمایی کنین
ممنون
سلام سخته نباشین شرمنده من یه سوالی دارم نمیدونم کجا بپرسم خیلی برام مهمه کلی دنبالش گشتم اما پیدا نکردم امیدوارم شما کمکم کنید .
میخواستم بدونم چطور میشه مقداری از یک متغیر رو تو یه متغیر دیگه بریزم ؟
مثلا تو یه متغیر چند کاراکتر داریم مثلا اینجوری :
int x = #987-#785
چطور میتونم مثلا 4 تا از کاراکتر های x رو توی y بریزم ؟
سلام
درباره آرایه مطالعه کنید.
سلام
من می خواستم یک pwm با فرکانس ۳۱.۲۵ کیلو هرتز درست کنم. می خواستم ببینم با تابع
delayMicrosecons
میشه این کارو کرد؟
سلام-از تایمر استفاده کن و نه این توابع – باید در سطح رجیستر کار کنی- نمیدونم کتابخونه ای براش هستش یا نه.
با درود فراوان
یه مشکل خیلی جالب که البته تو پروژه من مشکل چندانی ایجاد نکرده
تابع delay همونطور که گفتید بر حسب میلی ثانیه هست
برنامه ای نوشتم که اول روی برد uno راه اندازیش کردم و همه چیز دقیق و خوب بود (منظورم تابع delay هستش)
اما با ایستفاده از آموزش های همین سایت برای گرفتن فایل hex و تغییر بردم به NG که میکروکنترلر مورد استفاده اون Atmega8 هست برنامه رو منتقل کردم روی بردی که خودم طراحی کردم
ولی …
ولی با در نظر گرفتن کریستال 16 مگاهرتزی و تنظیم فیوزبیت هام موقع پروگرام میکرو، این تابع delay رو با سعی و خطا فهمیدم که باید 80 برابر در نظر بگیرم که بشه اون چیزی که از اول خواستم، در واع انگار سخت افزار حدود 80 برابر سریعتره.
حالا اگر دلیل به ذهنتون میرسه بگید اگرم نه که هیچ چون تو عملکرد اصلی پروژه مشکلی ایجاد نشده
ولی خودم احتمال ایراد سخت افزار خصوصا کریستال رو میدم هر چند که لحیم کاریش لحظه ای بوده و مقدار روش صحیحه، شاید کیفیتش بد باشه
سلام
کی گفته که فایل هگز مگا328 رو میتونید در مگا8 پروگرام کنید؟
سلام استاد من یک برنامه نوشتم که چند پین رو یک و بعد چند ثانیه بر حسب شرط ها هرکدوم را با زمان مشخص وضعیتشون تغییر کنه حالا من نمیخام برای تاخیر از delay استفاده کنم چون نمیخام برنامه سر هر تاخیری توقف کنه میخام بدون توقف اجرا بشه استفاده از تاخیر /unsigned long را برای این کار نمیدونم میشه راهنمایی کنید تشکر اینم کد
while (digitalRead(faz1)==LOW){
digitalWrite(starte,LOW);
delay(1000);
digitalWrite(genrator,LOW);
delay(1000);
if (digitalRead(oilcheragh)==LOW){
digitalWrite(stopm,HIGH);
delay(3000);
}
سلام
نحوه استفاده از millis به صورت مقابله : http://paste.debian.net/plain/1032720
چیزی هم که میخوای دقیقا متوجه نشدم وگرنه کدشو مینوشتم برات.
سلام با تشکر از توجه شما استاد برنامه ای که نوشتم مربوط به یک اتوماتیک دیزل ژنراتور هستش و کارش به این صورت هستش وقتی برق میره به طور اتوماتیک دیزل ژنراتور رو روشن میکنه و برقش رو با استفاده از کنتاکتور به مصرف کننده وصل میکنه بعد وقتی برق شبکه وصل شد از طریق یک کنترل فاز یکی از پایه های میکرو که یه عنوان ورودی تعریف شده یک میشه و دیزل رو خاموش میکنه و برق شهر رو با استفاده از کنتاکتور به مصرف کننده وصل میکنه مشکل اینجاست که چون از delay های زیادی تو کد استفاده کردم سر هرکدوم از تاخیرها برنامه توقف میکنه تا تاخیر سپری بشه و این مشکل پیش میاد مثلا تو قطع کردن استارت دیزل بعد از روشن شدن یکم طول میکشه قطع بشه بعد مشکل استارت زدن هستش تا دیزل روشن نشه قطع نمیشه حتی اگر ی ساعت استارت بزنه نمیدونم چطور بزارمش مثلا دوبار سعی کنه دیزل روشن بشه اگر نشد مثلا خطا بده کد رو کامل میزارم ی نگاهی بندازید متوجه مشکل میشید کد رو به ایمیلتون فرستادم
ایمیل دادم.
سلام خسته نباشید.
من از دو اردوینو میخوام هم زمان داده برداری کنم و داده ها رو در یک زمان با هم مقایسه کنم.دستور میلیس مرجعش استارت هست چیز دیگه ای نسیت که بتونی مرجعش رو تغییر بدی. باید چجوری این کارو کنم ؟ممنون
سلام – میشه پروژتونو توضیح بدید – اونم وقت بهتر میتونم کمک کنم تا الان.
سلام
توی اردوینو چطوری میشه تایمر ساخت؟
اصلا تایمر و کانتر به اون شکلی که توی avr داشتیم توی آردوینو هم هست یا فقط باید از دو تا دستور milis و micros استفاده کنیم؟!
سلام – هر دو – هم میتونی از توابعی که گفتی استفاده کنی ( فقط باید یه سرچی کنی که این دو تا تابع + تابع dealy از کدوم تایمر استفاده میکنن در آردوینو تا یه وقت اون تایمرو تغییر ندی تا این توابع دچار مشکل بشن – اگه هم نیازی به این توابع نداری که هیچ )
از رجیسترها هم میتونی استفاده کنی مث قبل و تایمرو تو مدل دلخواه و .. تنظیم کنی.
سلام علیکم
در پروژه ای از چنتا ماژول سنسور و سرو موتور استفاده شده(با مگا 32) و اگر بخوام السی دی گرافیکی اضافه کنم با کمبود پورت مواجه میشم
چه روشهایی برای افزایش پورت وجود داره که بتونم ال سی دی رو هم اضافه کنم به پروژه ؟
سلام
آیسی برای افزایش پایه هستش ولی داستان میشه برات یکم – سخت میشه – اینو بسرچ “افزایش پایه های میکرو” موردی بود در خدمتیم در حد توان.
بگرد یه نمایشگر سریال(یا I2C و…) پیدا کن.
سلام
من یه برنامه نوشتم ه این برنامه نیاز داره در n ساعت هر m ساعت به مدت x دقیقه فعالیت کنه میخاستم ببینم این کد رو تو ادروینو چجور میتونم پیاده سازی کنم؟
سلام ، ممنون بابت زحمات تون


والا من دقیق کاربرد این دوتا تابع رو نفهمیدم
میشه از کاربردشون یه مثال بگین؟
سلام – تابع ایجاد تاخیر زمانی هستند دیگه – مثلا بخوای یه led رو هر 1 ثانیه یکبار خاموش کنی – از این توابع میتونی استفاده کنی –
دستور روشن شدن led
1 ثانیه تاخیر
دستور خاموش شدن led
1 ثانیه تاخیر
delay رو میدانم چیه
کاربرد این دوتا تابع Millis و Micros رو متوجه نشدم. اگه ممکنه یه مثال بزنید
تایمر هستش دیگه – زمان شمارش شده بر حسب میلی/میکرو ثانیه رو به ما میده – برا Dealy یک ثانیه – میکرو 1 ثانیه تو اون قسمت صبر میکنه که اصلا چیز جالبی نی – به کمک تابع Millis که یکبار مقدارشو میخونیم و ذخیره میکنیم مثلا – بعد میایم میگیم تا زمانی که حاصل تفریق مقدار جدید Millis مقدار قبلی که ذخیره کردیم اگه بیشتر مساوی 1s شد بیا کار ما رو انجام بده وگرنه برو به کارای دیگه برس.