از زمانی که آردوینو به وجود آمد، پروژههای بسیار زیادی برای آن بهصورت متن باز و رایگان منتشر شد. آردوینو این قابلیت را به افراد میدهد تا با کمترین دانش برنامه نویسی و بدون درگیر شدن با موضوعات مختلف الکترونیکی ایدههای خودشان را با کمترین هزینه و دردسر پیاده سازی کنند. همین امر باعث علاقهمندی افراد زیادی به الکترونیک میشود. یکی از این ایدهها میتواند ایدهی ساخت بازی بهوسیله این برد محبوب باشد. اما چطور میتوان تنها با استفاده از آردوینو و بدون استفاده از آی سی جانبی یک بازی جذاب همراه با افکتهای صوتی ساخت؟ در این قسمت از پروژه های آردوینو قصد داریم تا بهوسیله برد آردوینو و ال سی دی کاراکتری 2*16 بازی دینو یا T-rex را به همراه افکتهای صوتی، در کمتر از 5 دقیقه راه اندازی کنیم. بازی دینو یا تی-رکس T-rex همان بازی است که شرکت گوگل در مرورگر کروم و در مواقع قطعی اینترنت آن را نمایش میدهد.
در ادامه با سیسوگ همراه باشید.
بازی دینو (تی-رکس)
گوگل در مرورگر کروم خود بهصورت مخفی بازی دایناسوری را قرار داده است که تنها هنگام آفلاین بودن اینترنت نمایش داده میشود. در مواقعی که ارتباط اینترنتی شما برقرار نباشد، کروم عبارت unable to connect to the internet را برای شما نمایش میدهد. در این صفحه یک دایناسور سیاه و سفید پیکسلی قابل مشاهده است. اگر شما دکمهی Space را از روی کیبرد فشار دهید، وارد بازی میشوید. حال شما یک دایناسور را میبینید که در حال دویدن در یک بیابان است! به محض اینکه یک کاکتوس به سمت شما نزدیک شد، با فشار دادن مجدد دکمه Space باید از روی آن بپرید. در غیر این صورت با کاکتوس برخورد کرده و شما میبازید! بازی بسیار ساده، ولی در عین حال اعتیاد آور و جذاب است. اگر مرورگر کروم ندارید، میتوانید از اینجا آنلاین بازی کنید.
خب، برویم سراغ ساخت بازی:
قطعات مورد نیاز
- برد آردوینو UNO یا NANO
- برد بورد
- نمایشگر کاراکتری 2×16
- کلید فشاری یا میکرو – یک عدد
- مقداری سیم یا جامپر وایر (برای بردبرد)
- بازر یا بیزر ( از نوع پسیو)
- مقاومت متغیر 5 کیلو اهم (پتانسیومتر) – جهت تنظیم وضوح صفحه نمایش
ممکن است هنگامی که شما این بازی را میسازید، به قطعاتی کمتر و یا بیشتر نیاز داشته باشید.
شماتیک مدار بازی تیرکس روی آردوینو و LCD کاراکتری
کدنویسی بازی تیرکس
در خطوط اولیه برنامه، نحوه اتصالات و سیم کشی مدار مشخص شده است. شما میتوانید بسته به نیاز خود، سیم کشی های ال سی دی، شماره پین آردوینو مربوط به دکمه بازی و خروجی صدا را تغییر دهید.
کد های مربوط به راهاندازی نمایشگر کاراکتری:
1 2 3 4 | #include <LiquidCrystal.h> const int rs = 8, en = 7, d4 = 6, d5 = 5, d6 = 4, d7 = 3; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); |
قسمت کد مربوط به تعریف کلید بازی و پین ملودی
1 2 | #define MELODY_PIN 9 #define PIN_BTN 10 |
توجه داشته باشید که برای تولید ملودی، باید از پایهای استفاده کنید که قابلیت تولید امواج pwm را داشته باشد.
نحوه تولید صدا
در مورد نحوه تولید ملودی و صدا در آردوینو بهوسیله بازر، قبلاً مطلبی در سیسوگ منتشر کردهایم. در این مقاله همچنین روشهای معمول تولید صدا در مدار را بررسی کردهایم. به همین خاطر مطالعه این مقاله را به شما حتماً توصیه میکنیم. در این بازی فرکانس نتها درون فایل pitches.h قرار گرفتهاند. ملودی و تمپو ها نیز درون فایل melody.h ذخیره شدهاند.
نحوه تعریف کاراکتر دلخواه برای ال سی دی
LCD های کاراکتری، حافظهای به نام CGRAM دارند که شما میتوانید در آن تنها 8 کاراکتر دلخواه تعریف نمایید. برای این کار ابتدا میبایست بهوسیله نرم افزار LCD custom character کاراکتر دلخواه خود را طراحی کرده، سپس کد آن را خروجی گرفته و بهوسیله آردوینو به ال سی دی معرفی کنید. این نرم افزار در انتهای مطلب بهصورت رایگان قابل دانلود میباشد.
در قسمت سمت راست تصویر بالا، یک قسمت شطرنجی سبز وجود دارد. با کلیک کردن داخل هر مربع میتوانید آنها را خاموش و روشن نمایید. در نهایت و پس از ساخته شدن کاراکتر دلخواه شما، با فشردن دکمه GENERATE کاراکتر بهصورت آرایهای از اعداد و در سه زبان C، پاسکال و بیسیک به شما تحویل داده میشود. شما به کدهای قسمت C و آرایهی آن نیاز دارید. در فایل bitmaps.h کاراکترهای لازم برای این بازی (dino، cacti، bird و block) تعریف شدهاند.
در setup اولیه آردوینو این کاراکترها به ال سی دی معرفی میشوند. همانطور که پیشتر هم اشاره شد، شما تنها میتوانید 8 کاراکتر را به ال سی دی خود معرفی کنید. این 8 خانه، از خانه صفر تا هفتم توسط تابع lcd.createChar(num, data) در آردوینو قابل دسترسی هستند.
1 2 3 4 | lcd.createChar(0, dino); lcd.createChar(1, cacti); lcd.createChar(2, bird); lcd.createChar(3, block); |
در ابتدای شروع بازی، تابع ()showCrashScreen صدا زده میشود تا آهنگ و متنهای اولیه را مشاهده کنید. سپس در این تابع، برنامه منتظر زدن دکمه شروع بازی توسط کاربر میماند. بعد از زدن کلید شروع توسط کاربر، وارد حلقهی اصلی برنامه یعنی loop میشویم. سپس الگوریتم برنامه با استفاده از توابع مختلفی که تعریف شده است، بازی را هدایت میکند. برای مثال:
1 | drawRandChar() |
1 | printScore() |
امتیاز کسب شده تا این لحظه را در وسط خط اول نمایشگر چاپ میکند.
1 | showCrashScreen() |
هنگامی که کاربر بازی را میبازد، این تابع روی صفحه پیام “!Game Over” را نشان داده و ملودی سوختن بازی را پخش مینماید. سپس امتیاز کسب شده و بهترین امتیاز را روی صفحه نشان میدهد.
روند اجرای بازی به این صورت است که با ایجاد اشکال تصادفی روی صفحه و سپس شیفت دادن آنها به سمت چپ، بازی به جریان افتاده و از طریق محاسبهی مدت زمان پرش و موقعیت فعلی تی-رکس، برخورد با اجسام تشخیص داده میشود.
نحوه نصب و اجرای بازی
تنها کافی ست پس از بستن مدار مطابق سیم کشیهای تعریف شده، کابل آردوینو را به کامپیوتر متصل کرده و کد را بهوسیله نرم افزار آردوینو روی آن آپلود کنید! کد آردوینو و نرم افزار Custom character در انتهای مطلب بهصورت رایگان قابل دانلود میباشد.
تبریک، هم اکنون میتوانید بازی کنید!
دانلود سورس برنامه
لینکهای دانلود
اسم فایل
- Arduino-Chrome-dino-T-rex-Game+custom-char-Sisoog.com-digi-boy.zip
این پروژه رو برای برد UNOبزازید
باسلام و خسته نباشید خدمت تیم زحمتکش سیسوگ
برنامه ای که قرار دادید دارای یک باگ اساسی هست به این صورت که اگر کلید بازی را رها نکنیم با وجودی که دایناسور پایین میاد اما بازیکن نمیبازه.
برقرار باشید.??
سلام.
ممنون از توجهتون، بررسی می کنم.
سلام.
ایراد برطرف گردید.
ایول خییلی باحال بووود تا حالا بازی رو اردوینو نریخته بودم
خیلی با مزه بود ممنون