در این پروژه می خواهم بازی مار (snake game) را با استفاده از نمایشگر ماتریسی ال ای دی 8*8 ، تعدادی تک سوئیچ ، میکروکنترلر ATmega328 و آردوینو UNO برای کنترل حرکت مار طراحی کنم.
Snake یک بازی قدیمی است که خاطرات کودکی ما را زنده می کند. آن زمان نمایشگرها تعداد پیکسل کمی داشتند ولی با این حال امکان اجرای بازی را داشتند. امروزه کارتهای گرافیک و پردازنده ها بسیار قوی هستند و اینگونه بازی ها در صنعت بازی جزو دسته بازیهای کلاسیک به حساب می آیند.
بازی مار یا snake چگونه است؟
بازی مار بسیار سرگرم کننده است و بر روی نمایشگر ماتریسی ال ای دی 8*8 ساخته شده که توسط میکروکنترلر ATmega328P کنترل می شود. سطرها و ستونهای نمایشگر ماتریسی با استفاده از شیفت رجیستر 74hc595 کنترل می شود. به این ترتیب نیاز کمتری به استفاده از سیم برای روشن کردن ال ای دی ها می باشد. همچنین چهار تک سوئیچ را به میکروکنترلر لحیم کردم تا بتوان مسیر حرکت مار را تغییر داد. کل مدار با استفاده از یک منبع تغذیه 5 ولت تأمین می شود.
ساخت نمایشگر ماتریسی ال ای دی 8*8
طراحی های زیادی برای ساخت نمایشگر ماتریسی ال ای دی 8*8 وجود دارد. نمایشگری که من طراحی کردم به صورت زیر است:
اتصال شیفت رجیستر به میکروکنتر در مدار بازی مار
میکروکنترلر آردوینو UNO تنها 13 پین دیجیتالی دارد، اما برای روشن کردن نمایشگر ماتریسی ال ای دی به 16 پین نیاز است. به همین دلیل از روش مالتی پلکس استفاده می کنم. برای پیاده سازی این روش، از شیفت رجیسترها استفاده می کنم. شیفت رجیسترها اغلب برای تبدیل داده های سریال به موازی به کار می روند. من از شیفت رجیستر 74hc595 استفاده می کنم. این شیفت رجیستر می تواند به هشت خط موازی وصل شود و دارای پین داده، کلاک و چفت (Latch) برای کنترل می باشد. به همین دلیل به 2 شیفت رجیستر نیاز است، یکی برای پین هایی که در سطر قرار دارند و دیگری برای پین هایی که در ستون هستند. من قصد دارم که اتصالات پین های داده، چفت و کلاک را در هر دو شیفت رجیستر کوتاه کنم. شماتیک مدار به شکل زیر است:
ویدیوی پیاده سازی اتصال ال ای دی ها به شیفت رجیسترها
پس از اینکه نمایشگر ماتریسی ال ای دی ها آماده شدند، حال نوبت به طراحی برد کنترلر که حاوی تک سوئیچ ها و کنترلر است، می باشد.
طراحی برد کنترلر بازی مار
در این قسمت دیاگرام مدار را قرار داده ام که در آن تک سوئیچ ها و ال ای دی ها به آردوینو متصل شده اند.
دیاگرام برد کنترلر بازی مار
تصویر زیر دیاگرام مدار برد کنترلر که شامل میکروکنترلر ATMega328p به همراه تک سوئیچ ها می باشد را نشان می دهد.
ویدیوی عملکرد مدار بازی مار
پین های VCC و GND برد کنترلر با استفاده از آردوینو Uno متصل شده است.
نتیجه گیری
در این پروژه نحوه اتصال 64 ال ای دی و تشکیل یک ماتریس 8*8 با استفاده از شیفت رجیستر برای اعمال روش مالتی پلکس نشان داده شده است.
برنامه نویسی پروژه بازی مار
شماتیک مدار
شماتیک زیر نحوه اتصال 64 ال ای دی با شیفت رجیسترها و آردوینو را نشان می دهد که چگونه یک نمایشگر ماتریسی با ال ای دی عمل می کند.
قطعات مورد نیاز
- 64x 5mm LED: Red
- 2x Shift Register
- 1x Vero Board
- 4x DFRobot Gravity:Digital Push Button (Yellow)
- 1x Microchip Technology ATmega328
- 1x Arduino UNO & Genuino UNO
- 30x Jumper wires (generic)