در این پست از سایت اِمیک, یک پروژه ساده ولی بسیار جالب به نام پروژه چراغ راهنمایی با میکروکنترلر AVR قرار داده شده است. عملکرد این پروژه دقیقاً مانند چراغ های راهنمایی رانندگی مورد استفاده در چهارراه ها می باشد. در زیر شماتیک این پروژه جالب را مشاهده می کنید:
همانطور که مشاهده می کنید, ما در این پروژه از میکروکنترلر ATmega16 استفاده کرده ایم. این پروژه شامل دو چراغ راهنمایی می باشد که هر کدام از انها برای یک مسیر در چهارراه می باشد. LED1 و LED2 و LED3 چراغ راهنمای اول می باشند که به ترتیب به پین های 0 تا 2 پورت C میکروکنترلر متصل شده اند. LED4 و LED5 و LED6 نیز چراغ راهنمای دوم می باشند که به ترتیب به پین های 3 تا 5 پورت C میکروکنترلر متصل شده اند.
پایه کاتد همه ی شش LED نیز به هم متصل شده و از طریق مقاومت R1 به منفی تغذیه متصل می باشد. مقاومت R1 برای محدود کردن جریان LED ها و جلوگیری از سوختن انها استفاده شده است. مقاومت R1 بهتر است 1 وات باشد تا در طولانی مدت بیش از اندازه داغ نشود. LED های استفاده شده در این پروژه نیز LED معمولی 5 میلیمتر می باشند که برای هر کدام از چراغ های راهنمایی باید یک عدد LED قرمز, یک عدد زرد و یک عدد سبز تهیه کنید.
شماتیک این پروژه بسیار ساده است و نکته خاصی ندارد. فقط توجه کنید که پایه های تغذیه میکروکنترلر (پایه 10 و 11) را که در شماتیک بالا نیست, فراموش نکنید به تغذیه 5 ولت متصل کنید.
برنامه کدویژن:
در این پروژه فرکانس میکروکنترلر 1 مگاهرتز تنظیم شده است. در زیر برنامه نوشته شده به زبان C و کامپایلر کدویژن را مشاهده می کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
////////// WWW.EMIC.IR ////////// #include <mega16a.h> //ATmega16A فراخواني کتابخانه ميکروکنترلر// #include <delay.h> //delay فراخواني کتابخانه// void main(void) { //ميکروکنترلر خروجي شده اند C در زير پين هاي 0 تا 5 از پورت// DDRC=(0<<DDC7) | (0<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (1<<DDC1) | (1<<DDC0); PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0); while (1) { PORTC.0=1; //روشن مي شود LED قرمز چراغ راهنمايي اول به ان متصل است برابر يک منطقي مي شود و اين LED که C پين 0 از پورت// PORTC.1=0; //خاموش است LED زرد چراغ راهنمايي اول به ان متصل است برابر صفر منطقي مي شود و اين LED که C پين 1 از پورت// PORTC.2=0; //خاموش است LED سبز چراغ راهنمايي اول به ان متصل است برابر صفر منطقي مي شود و اين LED که C پين 2 از پورت// PORTC.3=0; //خاموش است LED قرمز چراغ راهنمايي دوم به ان متصل است برابر صفر منطقي مي شود و اين LED که C پين 3 از پورت// PORTC.4=0; //خاموش است LED زرد چراغ راهنمايي دوم به ان متصل است برابر صفر منطقي مي شود و اين LED که C پين 4 از پورت// PORTC.5=1; //روشن مي شود LED سبز چراغ راهنمايي دوم به ان متصل است برابر يک منطقي مي شود و اين LED که C پين 5 از پورت// delay_ms(10000); //تاخير به مدت 10 ثانيه// PORTC.0=1; //در ادامه حالات ديگر چراغ راهنمايي تعريف شده اند// PORTC.1=0; PORTC.2=0; PORTC.3=0; PORTC.4=1; PORTC.5=0; delay_ms(5000); //تاخير به مدت 5 ثانيه// PORTC.0=0; PORTC.1=0; PORTC.2=1; PORTC.3=1; PORTC.4=0; PORTC.5=0; delay_ms(10000); //تاخير به مدت 10 ثانيه// PORTC.0=0; PORTC.1=1; PORTC.2=0; PORTC.3=1; PORTC.4=0; PORTC.5=0; delay_ms(5000); //تاخير به مدت 5 ثانيه// } } |
توضیحات قسمت های مهم برنامه نوشته شده, اگر سوالی داشتید می توانید در قسمت نظرات مطرح کنید. همانطور که در برنامه مشاهده می کنید مقدار تأخیر حالات مختلف روشن شدن چراغ راهنمایی به راحتی در برنامه قابل تغییر است. فایل های کدویژن و شبیه سازی پروتئوس را هم می تونید از انتهای مطلب دانلود کنید.
کلیپ شبیه سازی پروژه :
پسورد فایل زیپ : www.emic.ir
نظر یادتون نره…