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