فهرست مطالب:

بازی تیراندازی آردوینو V3: 4 مرحله
بازی تیراندازی آردوینو V3: 4 مرحله

تصویری: بازی تیراندازی آردوینو V3: 4 مرحله

تصویری: بازی تیراندازی آردوینو V3: 4 مرحله
تصویری: این بازی با واقعیت مجازی دل و جرعت میخواد 😂 Resident Evil 4 VR 2024, جولای
Anonim
Image
Image
بازی آردوینو تیراندازی V3
بازی آردوینو تیراندازی V3
بازی آردوینو تیراندازی V3
بازی آردوینو تیراندازی V3
بازی آردوینو تیراندازی V3
بازی آردوینو تیراندازی V3

این بازی برای شما مناسب است که از airsoft یا co2 برای شلیک به اهداف استفاده می کنید. این یک بازی است.

برای اطلاعات به روز در مورد بازی و پشتیبانی:

www.facebook.com/arduinoshooting/

برای صفحه وبلاگ من در مورد بازی:

shootinggameblog.wordpress.com

برای کدهای مربوط به بازی:

github.com/shootinggame82/Shooting-game-v3

بازی تیراندازی x اهداف بی سیم است ، هر هدف دارای یک سنسور ارتعاش است که ارتعاشی را که هنگام ضربه وارد می شود ، حس می کند. سنسورهای بی سیم یک تراشه Atmega328 (تراشه Arduino Uno) بوده و دارای باتری Li-Po هستند.

کنترلر اصلی این بازی توسط یک آردوینو کنترل می شود و سریال از طریق رزبری پای کنترل می شود.

بنابراین این بازی چگونه کار می کند؟ خوب این 3 حالت بازی است:

Quicktime: دور X بازی کنید و آنقدر سریع شلیک کنید که می توانید به هر هدف ضربه بزنید.

Timemode: تا X ثانیه تا جایی که می توانید شلیک کنید.

Rapidfire: در سریع ترین زمان عکس X بگیرید.

این سیستم از فرستنده های NRF24L01 برای دریافت فاصله مناسب از کنترلر اصلی استفاده می کند. آنها روی 2.6 گیگاهرتز کار می کنند (همانطور که WiFi کار می کند)

در پروژه های قبلی من از Piezo برای ارتعاش استفاده می کردم ، اما اکنون از Vibration Sensor Switch استفاده می شود. اما اگر نسخه قدیمی من از این بازی را ساخته اید ، هنوز می توانید از Piezo استفاده کنید.

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

تدارکات

برای فرستنده ها:

  • X Atmega328 با Arduino Bootloader (بسته به تعداد اهداف)
  • سوئیچ سنسور ارتعاش X
  • X Blue Led
  • X Green Led
  • X قرمز سرخ
  • باتری X 3.7v Li-Po
  • ماژول شارژر FC FC-75 Li-Po (یا مدل دیگر)
  • X 100 uF خازن
  • X موارد برای سنسورها
  • X LD1117V33 (3.3 ولت امن را برای فرستنده ایجاد می کند)
  • ماژول های X NRF24L01
  • مقاومت X x 3 220 اهم (3 عدد برای یک هدف مورد نیاز است)
  • کریستال X 16 مگاهرتز
  • X x 2 خازنهای Unplorized 22 pF (برای یک هدف 2 مورد نیاز است)

برای آردوینو اصلی:

  • 1 آردوینو (Nano یا Uno توصیه می شود ، باید USB داشته باشید)
  • 1 ماژول NRF24L01
  • 1 خازن 10 uF

برای تمشک پای:

  • رزبری پای (من از 3B استفاده کردم)
  • صفحه نمایش لمسی 7 اینچی
  • ATXRaspi (اختیاری اما ماژول دکمه پاور خوب)
  • RTCRaspi (اختیاری اما یک ماژول RTC خوب برای حفظ زمان و تاریخ)
  • چاپگر ترمال (اختیاری است اما برای چاپ امکان پذیر است)
  • اسکنر بارکد (نسخه USB که مانند صفحه کلید کار می کند ، اختیاری)
  • قدرت 5 ولت خوب (من از USB قدیمی 12 ولت با قدرت 2.5 آمپر استفاده کردم)

باقی مسایل:

  • قدرت 12 ولت (من یکی در 12 آه)
  • سوکت شبکه (اتصال به شبکه را آسان کنید)
  • کابل ها

مرحله 1: سنسورهای بی سیم

سنسورهای بی سیم
سنسورهای بی سیم
سنسورهای بی سیم
سنسورهای بی سیم
سنسورهای بی سیم
سنسورهای بی سیم

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

همچنین LED سبز و قرمز داریم. همیشه سبز روشن می شود تا از روشن بودن سنسور مطلع شود. قرمز فقط زمانی روشن می شود که باتری کمتر از 3.1 ولت باشد (از عملکرد داخلی در تراشه برای محاسبه مقدار باتری استفاده می کند.

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

هدف دارای عملکردی ایمن است ، در صورتی که شما در X ثانیه ضربه نزنید (به طور پیش فرض 15 ثانیه است) یا اگر انتقال نتواند در آن انجام شود ، به موقعیت اولیه باز می گردند.

من نمی خواهم توضیح دهم که چگونه می خواهید سیم کشی کنید ، ورق برق را بررسی کنید تا ببینید چگونه می خواهید این کار را انجام دهید. چیزی که روی آن وجود ندارد ، باتری ، سوئیچ قدرت و شارژر است. این شما هستید که تصمیم می گیرید چگونه می خواهید.

مهم در مورد ماژول NRF24L+:

این می تواند دردناک باشد … ثابت نگه داشتن آنها ، همراه با قدرت خوب و انزوا در اطراف آن ، و کدی که به آنها کار می دهید. برای من 10 خازن uF اتصال پایدار و خوبی به من می دهد ، اما لطفاً ابتدا به عنوان مثال به خازن 100 uF نیاز داشته باشید. همچنین ابتدا آنها را با فویل پلاستیکی و سپس فویل آلومینیومی بپیچید تا از تداخل آنها جلوگیری شود

همچنین در کد ، میزان داده ای که شما بیش از 250 کیلوبایت نیاز ندارید تا مشکلی ایجاد نشود. اما PA: myRadio.setPALevel (RF24_PA_MIN) ؛

در کدی که من روی MIN تنظیم کرده ام (این در حین آزمایش است) ، کمترین مقدار است و از قدرت زیادی استفاده نمی کند ، اما دامنه آن چندان طولانی نخواهد بود. اگر از قدرت پایدار و خوبی برخوردار هستید ، می توانید تا RF24_PA_MAX بروید تا طولانی ترین برد را بدست آورید ، اما آنها برای این کار به قدرت پایدار GOOOOOD نیاز دارند. همچنین سعی کنید LOW AND HIGH (فقط MAX متن را تغییر دهید) تا ببینید آیا ارتباط خوبی دارید یا خیر. همچنین شما می توانید برد خوبی را در LOW و HIGH دریافت کنید مگر اینکه قصد دارید تک تیرانداز باشید

همچنین فرستنده ها را حداقل یک متر از هم دور نگه دارید ، بستن می تواند سیگنال را بد کند

ارتباط را با چند مثال پینگ در کتابخانه NRF24 آزمایش کنید (پیوند در GitHub)

در کد باید شماره شناسایی منحصر به فرد آن هدف را تنظیم کنید:

int targID = 3401؛ // این شناسه هدف است

int sendID = 2401؛ // این شناسه پاسخ است

همچنین 3 تابع DEFINE وجود دارد:

#DEBUG را تعریف کنید

#باتری تعریف کنید

#defeine SHAKE // IF SHAKE SWITCH بجای PIEZO قدیمی استفاده می شود

اشکال زدایی:

در طول تست این خوب است که تعریف شود. اما وقتی آنها را در دسترس قرار می دهید ، آن را فعال نکنید.

باتری:

اگر نمی خواهید یک باتری برای اهداف داشته باشید ، باید این تعریف را حذف کنید.

تکان دادن:

اگر نسخه قدیمی من را ساختید ، سنسورهای پیزو دارید ، سپس این را حذف کنید تا کد صحیح برای آنها دریافت شود.

تراشه ATMEGA328

به جای آردوینو نانو ، تصمیم گرفتم از تراشه ATMEGA328 (با بوت لودر Uno) استفاده کنم ، برنامه ریزی آنها ساده است فقط تراشه را از Arduino Uno حذف کرده و این تراشه و کد بارگذاری را اضافه کنید. نحوه برقراری اهداف را بررسی کنید.

کد

من کد را به جای Arduino IDE با PlatformIO نوشته ام. این نرم افزار بهتری برای برنامه نویسی است. بنابراین کد کمی متفاوت است. توصیه می کنم به جای آن از این نرم افزار استفاده کنید.

جعبه هدف و فرستنده

سنسور و LED آبی را روی هدف وصل کرده ام و با یک کابل فونو 3 ، 5 میلی متری و 2 متری آن را در جعبه فرستنده که تراشه اتماگا ، شارژر باتری و چراغ سبز و قرمز را نگه می دارد ، به هم متصل می کنم. این برای محافظت از آن در برابر اصابت گلوله های فولادی است.

مرحله 2: کنترل کننده بازی

کنترل کننده بازی
کنترل کننده بازی
کنترل کننده بازی
کنترل کننده بازی
کنترل کننده بازی
کنترل کننده بازی
کنترل کننده بازی
کنترل کننده بازی

کار بعدی که باید انجام دهیم این است که کنترلر سنسورها را بسازیم. این یک آردوینو است که از ماژول NRF24L01 برای ارتباط با سنسورها استفاده می کند. هیچ چیز دیگر. سپس آردوینو با USB در تمشک pi متصل می شود تا کار کند.

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

وقتی بازی را انجام می دهید ، از pi چه نوع بازی و چند دور/بازدید استفاده می شود. خودشه.

ممکن است از ماژول های NRF24L01 در تمشک pi استفاده کنید ، اما برای من آردوینو گزینه بهتری است ، من هرگز از آنها در تمشک استفاده نمی کنم ، بنابراین نمی دانم که آنها در دراز مدت چقدر خوب کار می کنند

یک ماژول قدرت وجود دارد که از 5 ولت برای ایجاد قدرت پایدار صحیح برای فرستنده ها استفاده می کند. می توانید از آنها با آردوینو استفاده کنید (تصویر را ببینید) نام برد ماژول Socket Adapter است

هنگام بازی اهداف به طور تصادفی یکی یکی فعال می شوند. هنگامی که یکی ضربه می خورد ، یکی دیگر فعال می شود.

در حین آزمایش می توانید #DEFINE DEBUG را فعال کنید تا نحوه عملکرد آن را ببینید ، اما زمانی که از آن در رایانه pi استفاده می کنید ، آن زمان کار نمی کند.

کد را در صفحه GitHub بارگیری کنید.

مرحله 3: تمشک پای

تمشک پای
تمشک پای
تمشک پای
تمشک پای
تمشک پای
تمشک پای
تمشک پای
تمشک پای

اکنون به Raspberry Pi آمده ایم.

برخی از عملکردهای اضافی را اضافه کرده ام تا بتوانم دکمه روشن / خاموش داشته باشم. ATXRaspi 3 یک ماژول عالی است ، می توانید pi را با یک دکمه روشن ، خاموش و راه اندازی مجدد کنید. همچنین یک RTCRaspi برای نگه داشتن زمان و تاریخ روی pi. همچنین این امکان وجود دارد که فقط یک کابل شبکه را که نیاز به انجام برخی از به روزرسانی ها در سیستم است ، اضافه کنید. آنها را در Lowpowerlab پیدا خواهید کرد

چاپگر حرارتی را می توانید در sparkfun پیدا کنید و بارکد خوان در آمازون موجود است.

رایانه Pi در حالت کیوسک اجرا می شود ، بنابراین مرورگر در ابتدا باز می شود. اول از همه شما باید یک وب سرور با PHP 7 و mysql در رایانه pi داشته باشید. (راهنمای زیادی در این زمینه در وب وجود دارد)

لطفاً توجه داشته باشید: اگر قصد دارید از چاپگر حرارتی با تمشک pi که دارای بلوتوث است استفاده کنید ، ابتدا باید آن را غیرفعال کنید

اسکریپت پایتون نیاز به pyserial دارد و شما آن را نصب کنید: sudo apt-get install python-serial

برای ایجاد کار mysql موارد زیر را نصب کنید:

sudo apt-get install mysql-python sudo apt-get install python-mysql.connector

suso apt-get pymysql را نصب کنید

اکنون می توانید Arduino را از طریق سریال کنترل کرده و پایگاه داده mysql را نیز به روز کنید.

مرحله بعدی ایجاد اسکریپت پایتون برای اتصال به mysql است.

در هر سه اسکریپت پایتون ، اتصال به پایگاه داده mysql خود را تغییر دهید.

گام بعدی این است که اسکریپت پایتون را در ابتدا اجرا کنید.

سه python script وجود دارد. استفاده از اسکنر بارکد

برای شروع خودکار آنها را ویرایش می کنم:

sudo nano /etc/rc.local

و قبل از خروج 0 موارد زیر را در پایین اضافه کنید:

sudo python /home/pi/Gamefiles/game.py & sudo python /home/pi/Gamefiles/print.py & sudo python /home/pi/Gamefiles/ean.py &

لطفاً مکان صحیح اسکریپت پایتون خود را تغییر دهید و علامت & را در پایان فراموش نکنید

اکنون باید یک حالت کیوسک برای مرورگر وب ایجاد کنیم ، ابتدا مکان نما را حذف کنید:

sudo apt-get unclutter را نصب کنید

sudo nano/etc/xdg/lxsession/LXDE-pi/autostart

اکنون در آن فایل پیدا کنید و نظر دهید:

xscreensaver -no -splash # این خط را برای غیرفعال کردن محافظ صفحه کامنت کنید

در زیر آن اضافه کنید:

xset s offxset -dpmsxset s noblank @chromium-browser --noerrdialogs --force-device-scale-factor = 1.25 --kiosk https:// localhost

گام بعدی برای حذف همه متون بوت و موارد دیگر و همچنین افزودن صفحه بوت خود در اینجا یک راهنمای سریع است:

sudo nano /boot/config.txt و در پایین adddisable_splash = 1

حذف پیام متنی زیر تصویر چلپ چلوپ:

sudo nano /usr/share/plymouth/themes/pix/pix.script

پیدا و حذف کنید (یا نظر دهید):

message_sprite = Sprite () ؛ message_sprite. SetPosition (عرض_صفحه * 0.1 ، ارتفاع_صفحه * 0.9 ، 10000) ؛

و:

my_image = Image. Text (متن ، 1 ، 1 ، 1) ؛ message_sprite. SetImage (my_image) ؛

اکنون پیام های بوت را حذف می کنیم:

sudo nano /boot/cmdline.txt

"console = tty1" را با "console = tty3" جایگزین کنید

و در انتهای خط اضافه کنید:

splash bêdeng plymouth.ignore-serial-consoles logo.nologo vt.global_cursor_default = 0

و pi splash را با خود جایگزین کنید:

sudo cp ~/my_splash-p.webp" />

اکنون شما صفحه بوت سفارشی خود را برای بازی خود دارید. رایانه pi شما اکنون آماده مدیریت بازی است. بنابراین به مرحله بعدی بروید!

مرحله 4: راه اندازی بازی

در این مرحله شما اکنون بازی را ایجاد کرده اید.

اولین کاری که باید انجام دهید این است که سیستم وب را راه اندازی کنید. پایگاه داده را روی سرور mysql خود بارگذاری کنید. فایل در پوشه شامل و با نام database.sql است

مرحله بعدی ویرایش فایل پیکربندی است ، آن را در نام پوشه شامل config.php پیدا می کنید اطلاعات ورود به پایگاه داده را تغییر دهید تا اسکریپت کار کند.

سیستم وب چند زبان است و به زبان انگلیسی نوشته شده است. ترجمه سوئدی موجود است. برای ایجاد زبان بیشتر به نرم افزاری به نام Poedit نیاز دارید.

برای افزودن زبان بیشتر به سیستم وب ، باید i18n_setup.php را ویرایش کرده و در آرایه اضافه کنید:

بازگشت in_array ($ locale، ['en_US'، 'sv_SE'])؛ (خط 23)

همچنین برای تغییر زبان پیش فرض باید خط 27 را تغییر دهید: $ lang = 'en_US'؛ en_US را به زبان خود تغییر دهید.

فایلهای زبان باید در زبانهای محلی/LANGCODE/LC_MESSAGES/قرار داده شوند و main.mo نامگذاری شوند (کد زبان را به زبان خود تغییر دهید)

برای تغییر صفحه کلید در فایل selectplayers.php زبان را تغییر می دهید: "en" ، // en برای انگلیسی sv برای طرح سوئدی: "qwerty" ، // qwerty برای انگلیسی سوئدی-qwerty برای سوئدی

آنها را در خط 218 و 219 پیدا می کنید

زبانهای موجود در پوشه هستند: properties/js/صفحه کلید/زبانها و طرحها در داراییها/js/صفحه کلید/طرح بندی هستند و فایلهای صحیح را به خط 118 و 119 اضافه کنید (جایگزین مواردی که اکنون در آنجا پیدا کرده اید)

اهداف را اضافه کنید

برای افزودن اهداف به localhost/ admin/ رفته و بر روی افزودن اهداف کلیک کنید.

شما باید یک نام برای هدف و شناسه هدف منحصر به فرد اضافه کنید و شناسه ارسال کنید ، به همان تعداد اهدافی که دارید اضافه کنید.

بازی ها را اضافه کنید

همچنین باید چند بازی اضافه کنید. به localhost/ admin بروید و بر روی افزودن بازی کلیک کنید

شما باید نامی برای بازی ، توضیحاتی ، حداقل و حداکثر بازیکنان چه نوع بازی ، و همچنین میزان سختی بازی بین 1 تا 5 و نحوه بازی را اضافه کنید ، بنابراین برای بازی quickfire تعداد بازدیدها را اضافه کنید (مثال 30) برای quickdraw چند دور (به عنوان مثال 8) و زمان بندی شده برای مدت زمان بازی آنها (به عنوان مثال 60 به مدت یک دقیقه)

شروع بازی

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

موفق باشید

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

توصیه شده: