فهرست مطالب:

آردوینو - وقفه دوره ای: 4 مرحله
آردوینو - وقفه دوره ای: 4 مرحله

تصویری: آردوینو - وقفه دوره ای: 4 مرحله

تصویری: آردوینو - وقفه دوره ای: 4 مرحله
تصویری: How to use 4 channel Relay to control AC load with Arduino code 2024, جولای
Anonim
آردوینو - وقفه دوره ای
آردوینو - وقفه دوره ای

این دستورالعمل در مورد استفاده از وقفه دوره ای برای زمان بندی در برنامه های آردوینو است. این یک گام برای برنامه نویس تازه کار Arduino است که می داند Arduino می تواند کارهای بیشتری انجام دهد ، اما نمی داند چگونه این کار را انجام دهد.

اگر مشکلی در عملکرد وجود دارد ، فرض می کنم که از یک یا چند تابع تاخیر () استفاده می کنید. ترفند این است که از تابع () تاخیر خلاص شوید و یک وقفه را جایگزین کنید. تابع تاخیر () آردوینو را مجبور می کند در حالی که منتظر تکمیل تاخیر () است هیچ کاری انجام ندهد. استفاده از وقفه به برنامه شما اجازه می دهد تا کارهای دیگری را انجام دهید در حالی که منتظر پایان تاخیر هستید. معمولاً مقدار زیادی از زمان مرده بلااستفاده وجود دارد که می تواند برای موارد دیگر هنگام استفاده از تأخیر () استفاده شود. با استفاده از وقفه این مشکل برطرف می شود.

مرحله 1: وقفه گیرنده

1. کنترل کننده وقفه را به برنامه خود اضافه کنید. فقط کافی است جایی بالاتر از setup () کپی و جایگذاری کنید.

const بدون علامت طولانی TIMER0_COUNT = 500 ؛ // فاصله تایمر 500 میلی ثانیه

// TIMER0 interrupt handler volatile bool time = false؛ ISR (TIMER0_COMPA_vect) {تعداد طولانی بدون علامت ثابت = 0 ؛ if (++ تعداد> TIMER0_COUNT) {count = 0؛ زمان = درست ؛ // زمان در هر TIMER0_COUNT میلی ثانیه روی true تنظیم شده است // (زمان باید در روال اصلی پاک شود)}

مرحله 2: فاصله زمانی دوره ای را تنظیم کنید

2. فاصله زمانی را تنظیم کنید. این روال معمولی خود را روی وقفه TIMER0 پشت می کند ، که قرار است هر 1 میلی ثانیه پهن شود.

"فاصله" شما تعداد وقفه های TIMER0 برای پردازش است. هر فاصله m 1 ثانیه است ، بنابراین شما واقعاً تعیین می کنید که چند وقفه TIMER0 قبل از فعال کردن فاصله خود شمارش کنید. IOW ، متغیر TIMER0_COUNT را بر حسب میلی ثانیه ای که می خواهید صبر کنید ، تنظیم کنید. به عنوان مثال ، از 500 در نیم ثانیه استفاده کنید. از 3000 برای 3 ثانیه استفاده کنید.

مرحله 3: راه اندازی اولیه را قطع کنید

3. کد "مقداردهی اولیه TIMER0" را به روش setup () خود اضافه کنید. دوباره ، فقط کافی است در setup () کپی و جایگذاری کنید.

// *** راه اندازی اولیه TIMER0 ***

cli ()؛ // خاموش کردن همه وقفه ها TIMSK0 = 0؛ // تایمر 0 را برای jitter پایین تر OCR0A = 0xBB خاموش کنید ؛ // شمارش وقفه دلخواه TIMSK0 | = _BV (OCIE0A) ؛ // پیگگی بازگشت به interrupt sei ()؛ // وقفه ها را دوباره روشن کنید

مرحله 4: کجا کد خود را اضافه کنید

4. کد "time check" را به حلقه () حلقه خود اضافه کنید. در حلقه () کپی و جایگذاری کنید.

اگر (زمان) {

زمان = غلط ؛ // کاری در اینجا انجام دهید}

"زمان = غلط ؛" خط مهم است بدون این خط ، خط (ها) "در اینجا کاری انجام دهید" هر بار که برنامه حلقه () را اجرا می کند اجرا می شود.

البته ، شما فعالیت های خود را در خط "کاری در اینجا انجام دهید" جایگزین کنید. کار را با چاپ مقداری متن یا چشمک زدن LED شروع کنید.

تمام شدی!

توصیه شده: