پروژه: ساخت یک برج تاس هوشمند با آردوینو (دستیار بازی‌های رومیزی)

مقدمه

حتما تا به حال با برد گیم ها بازی کرده اید. همانطور که می­دانید در بسیاری از بازی های صفحه ای (برد گیم) از تاس استفاده می­شود. بازی کردن با تاس همواره هیجان زیادی دارد، اما گاهی اوقات انداختن تاس با مشکلاتی همراه است. مثلا در صورت زیاد بودن تعداد بازیکنان امکان فراموش شدن نوبت وجود دارد. آیا تا به حال به حل این مشکل فکر کرده اید؟ شاید استفاده از الکترونیک بتواند ما را در حل این مشکل یاری کند! در این آموزش قصد داریم با استفاده از یک نمایشگر LCD TFT، آردوینو، ماژول صوت KY-037 و LED RGB یک دستیار بازی هوشمند بسازیم.

آنچه در این آموزش یاد می گیرید

  • برج تاس یا دایس تاور چیست و چگونه یک دایس تاور بسازیم؟
  • استفاده از سنسور صوت برای تشخیص افتادن تاس
  • استفاده از LED RGB برای نمایش نوبت و رقص نور
  • استفاده از LCD برای نمایش اطلاعات بیشتر و ساختن یک تاس مجازی

برج تاس یا دایس تاور (Dice Tower) چیست؟

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

بازی های رومیزی: جذابیت بیشتر، تقلب کمتر!

در تمام بازی ها امکان خطا و تقلب وجود دارد. بازی هایی که با تاس انجام می­شوند هم از این قاعده مستثنی نیستند. در برخی موارد نیز ممکن است هیجان و سرعت زیاد بازی باعث شود نوبت ها فراموش شود. بنابرین در این مواقع وجود یک داور می­تواند بسیار مفید باشد. با کمی خلاقیت و استفاده از الکترونیک می­توان دایس تاوری ساخت که بتواند این کار را برایمان انجام دهد و نوبت ها را با نورهای رنگی نمایش دهد.

شاید برای شما پیش آمده باشد که هنگام بازی متوجه شوید تاس شما گم شده است. حتما در این شرایط با خود فکر کرده اید ای کاش بشود از یک شیء دیگر (مثلا یک سنگ!) بجای تاس استفاده کرد. Dice Tower این امکان را به شما می دهد. حتی اگر هیچ شیء دیگری در دسترس نداشتید باز هم جای نگرانی نیست، چون دایس تاور ما یک تاس مجازی هم دارد.

لوازمی که به آن احتیاج دارید

قطعات مورد نیاز

برد آردوینو UNO R3 × 1
شیلد و ماژول نمایشگر لمسی 2.4 اینچ × 1
ماژول سنسور صوت - سنسور صدا KY-037 × 1
ال ای دی 4 پین رنگی × 3
جا باتری نیم قلمی 3 تایی درب دار × 1
باتری نیم قلمی آلکالاین پلاس چهارعددی کملیون × 3
مقاومت 330 اهم × 3

نرم افزار های مورد نیاز

Arduino IDE

سرهم کردن بدنه دایس تاور

برای ساخت دایس تاور هوشمند نیاز داریم ابتدا بدنه آن را بسازیم. جنس بدنه می­تواند از چوب MDF و یا پلکسی به ضخامت 2.8 میلیمتر باشد. برای ساخت آن فایل نقشه برش لیزر را از اینجا دانلود کنید.

این دایس تاور دارای 58 قطعه می­باشد که باید مطابق ویدئوی زیر با چسب قطره ای به یکدیگر متصل شوند.
نقشه سه بعدی زیر نیز می تواند به شما کمک کند:

توجه

تمام قطعات نقشه فوق مورد استفاده قرار نمی­گیرند. برخی از قطعات اضافه هستند.

سیم بندی

برای راه اندازی LCD کافیست آن را روی برد آردوینو قرار دهیم (به محل قرارگیری پایه ها و جهت قرارگیری ماژول LCD دقت کنید). برای راه اندازی ماژول صوت KY-037 کافیست تغذیه ماژول را به پایه های 5v و GND آردوینو وصل کرده و پایه خروجی دیجیتال آن را به پایه D13 آردوینو وصل کنیم.

برای روشن کردن LED RGB نیز، کاتد آن را به پایه GND آردوینو و پایه های قرمز، سبز و آبی آن را به ترتیب به پایه­های D5،  D6 و D7 آردوینو متصل می­کنیم.

استفاده از سنسور صوت برای تشخیص افتادن تاس

برای تشخیص افتادن تاس می توان از سنسور ضربه و یا سنسور صدا استفاده کرد. با توجه به اینکه ضربه ناشی از سقوط تاس معمولا کمتر از حدی است که بتواند سنسور ضربه را در زیر صفحه های داخلی دایس تاور تحریک کند و همچنین به دلیل آسیب پذیر بودن سنسور ضربه نمی توان از آن در مسیر تاس استفاده کرد، بنابراین استفاده از سنسور صوت گزینه مناسب تری است. راه اندازی ماژول صوت KY-037 بسیار ساده است. برای این کار کافیست پایه های آن مطابق تصویر 4 به آردوینو متصل شود. از آنجا که در این پروژه تنها 1 نوع صدا برای تشخیص وجود دارد، تنها از پایه دیجیتال ماژول صوت استفاده شده است. برای تشخیص صدای تاس کافیست پایه D13 آردوینو را که به پایه خروجی دیجیتال ماژول صوت وصل شده است با دستور digitalRead() بخوانیم. پایه دیجیتال این ماژول pullup شده است و در صورت تحریک شدن ولتاژ آن صفر می­شود. با چرخاندن پتانسیومتر قرارگرفته روی برد ماژول، می­توان آستانه تحریک سنسور را تغییر داد. به منظور تنظیم دقیق این سنسور متناسب با صدای افتادن تاس، مراحل زیر را دنبال کنید:

  1. ابتدا کد زیر را روی آردوینو آپلود کنید:


2.پنجره ی سریال (Serial Monitor) را باز کنید. سپس تاس را به تناوب از بالای دایس تاور رها کنید. همزمان پتانسیومتر مولتی ترن را آن قدر بچرخانید تا عدد نمایش داده شده صفر شود. چندین بار تاس را بیندازید تا مطمئن شوید ماژول به درستی تنظیم شده است و همچنین آن را به گونه ای تنظیم کنید که با صداهای دیگری که در محیط وجود دارد تحریک نشود تا تشخیص تاس به درستی اتفاق بیوفتد.

برای دریافت اطلاعات بیشتر در مورد نحوه استفاده از ماژول KY-037 به اینجا مراجعه کنید.

استفاده از LED RGB برای نمایش نوبت و رقص نور

LED RGB انواع مختلفی دارد. در این پروژه از نوع 4 پین کاتد مشترک استفاده شده است. برای روشن کردن این LED باید پایه کاتد آن به GND متصل شود و با HIGH کردن ولتاژ هر یک از پایه­های دیگر یکی از رنگ­های قرمز، سبز و یا آبی روشن می­شود. همچنین اگر ولتاژ هر سه پایه با هم HIGH شود، LED به رنگ سفید در می­آید.

نکته

می­توان از سیگنال PWM و دستور analogWrite در آردوینو برای تنظیم نور هر یک از پایه­ها استفاده کرد، به این وسیله می­توان طیف مختلفی از رنگ­ها را با ترکیب نورهای قرمز، سبز و آبی نمایش داد.

با استفاده از کد زیر می­توان LED RGB را به تناوب به رنگ های قرمز، سبز، آبی و سفید درآورد:

استفاده از LCD برای نمایش اطلاعات بیشتر و ساختن تاس مجازی

برای اینکه بتوانیم نوبت هر بازیکن را با رنگ LED RGB نشان دهیم، نیاز داریم تعداد بازیکن­ها و رنگ مربوط به هر یک را بدانیم. به این منظور می­توانیم از یک TFT LCD به همراه تاچ اسکرین استفاده کنیم. یکی از راحت ترین و مناسب ترین گزینه­ها، استفاده از شیلد LCD 2.4 اینچی Adafruit می­باشد.

روش راه­اندازی و کار با این LCD به صورت کامل در این لینک موجود است.

در کد زیر هنگام راه اندازی LCD، ابتدا تعداد بازیکنان پرسیده می­شود و کاربر می­تواند با لمس هر یک از تاس های 1 تا 4 تعداد بازیکنان را انتخاب کند. پس از آن بسته به تعداد بازیکنان رنگ مورد نظر هر بازیکن پرسیده می­شود و هر یک از بازکنان باید یکی از رنگ­های سفید، قرمز، سبز یا آبی را انتخاب کنند. در انتها یک بار ترتیب رنگ ها نمایش داده شده و سپس بازی آغاز می­شود.


پس از آنکه تعداد بازیکنان و رنگ­های آن ها مشخص شد قسمت اصلی برنامه آغاز می­شود. در این قسمت با استفاده از ماژول صوتی KY-037 تعداد دفعاتی که تاس ریخته شده است محسابه می­شود و در متغیر count ذخیره می­شود. با محاسبه باقیمانده­ی این عدد بر تعداد بازیکنان مشخص می­شود که نوبت کدام بازیکن است که باید تاس را بیندازد. سپس صفحه LCD به رنگ آن بازیکن درمی­آید و نوبت را نمایش می­دهد. همچنین RGB LED نیز به رنگ آن بازیکن در می­آید و تا وقتی که بازیکن تاس را نینداخته رنگ آن ثابت می­ماند. به منظور زیباتر کردن برج، هر بار که تاس ریخته می­شود RGB LED چندبار به رنگ­های مختلف درمی­آید و همچنین روی LCD انیمیشن تاس به صورت رندوم نمایش داده می­شود.

در قسمت راست تصویر LCD نیز تعداد دفعاتی که تاس ریخته شده است نمایش داده می­شود.


در این کد به وسیله تابع Dice(number) تاس با عدد مورد نظر نمایش داده می­شود.

برای جذاب­تر شدن بازی، به جای استفاده از رنگ ها برای نمایش نوبت می­توانید از تصاویر استفاده کنید. به این منظور تصاویر دلخواه خود را روی کارت SD micro ذخیره کرده و آن را درون درگاه نمایشگر قرار دهید. با استفاده از کد زیر می­توانید تصاویر را از درون کارت حافظه فراخوانی کنید.


برای استفاده از این کد باید تابع فوق را به انتهای کد اصلی اضافه کنید و سپس با جایگزینی دستور bmpDraw(c[t], 0, 0); به جای دستور tft.fillScreen(c[t]); تصاویر را بجای رنگ ها فراخوانی کنید. در این صورت در هر نوبت به جای نمایش رنگ، تصویر مربوط به هر بازیکن نمایش داده شود.

در این حالت متغیر c[t] باید از نوع string با حداقل طول 10 تعریف شود که حاوی نام تصاویر ذخیره شده مربوط به هر بازیکن در کارت حافظه می­باشد.

تصاویر مورد نظر باید همگی به ابعاد 320 در 240 پیکسل و با فرمت bitmap 24bit باشد. به طور مثال می­توانید تصاویر موجود این فایل را درون کارت micro SD کپی کنید.

افزودن تاس مجازی و آپلود کد نهایی

حال که می­توانیم تاس­های مختلف را روی صفحه نمایش نشان دهیم، می­توانیم یک تاس مجازی نیز داشته باشیم. برای این کار کافیست کد زیر را در ابتدای void loop() وارد کنیم:


با اضافه کردن این کد به void loop() سمت چپ LCD یک کلید ظاهر می­شود که روی آن کلمه virtual dice نوشته شده است. با لمس کردن این کلید رنگ آن روشن و حالت تاس مجازی فعال می­شود. در این حالت تاس نشان داده شده در وسط LCD به صورت رندوم تغییر می­کند و برای مدت 2 ثانیه ثابت می­ماند. برای ایجاد این وقفه باید کد بخش LCD dice animation با کد زیر جایگزین شود.

کد کامل دایس تاور هوشمند را می توانید از اینجا دانلود و سپس روی برد آردوینو آپلود کنید. اما پیش از آن لازم است صفحه تاچ LCD را کالیبره کنید.

کالیبره کردن صفحه نمایشگر لمسی

برای کالیبره کردن صفحه نمایشگر لمسی می­توانید از کد زیر استفاده کنید.

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


کد فوق را روی برد آردوینو آپلود کنید سپس نقاط نمایش داده شده به رنگ قرمز را لمس کنید. اعدادی که در صفحه سریال مانیتور و یا در مرحله آخر روی LCD مشاهده می­کنید را با اعداد درنظر گرفته شده برای متغیرهای TSx_dices، TSy_1st_dice، TSy_2nd_dice، TSy_3th_dice، TSy_4th_dice، TSy_virtual_dice در ابتدای کد اصلی جایگزین کنید.

یک گام جلوتر

  • برنامه تاس مجازی را به گونه ای تغییر دهید که اگر یکی از بازیکنان تاس 6 را بیاورد بتواند تاس جایزه خود را بیاندازد و نوبت تغییر نکند.

Share this post

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *