فهرست مطالب:

Plug and Play Arcade Button: 7 مرحله (همراه با تصاویر)
Plug and Play Arcade Button: 7 مرحله (همراه با تصاویر)

تصویری: Plug and Play Arcade Button: 7 مرحله (همراه با تصاویر)

تصویری: Plug and Play Arcade Button: 7 مرحله (همراه با تصاویر)
تصویری: LW31 AGPTEK Smart Watch IP68: Things To Know Before Buy // For Android and iPhone 2024, نوامبر
Anonim
پلاگین و بازی دکمه های بازی
پلاگین و بازی دکمه های بازی

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

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

همانطور که می خواستم یک دستگاه plug and play داشته باشم که بتوانید فوراً با هر رایانه ای از آن استفاده کنید ، یک آردوینو لئوناردو خریدم. این تقریباً شبیه Uno است ، اما با تفاوت های کمی. تفاوت اصلی که من به نفع خودم در این پروژه استفاده خواهم کرد این است که می توان به عنوان HID عمل کرد. HID یا دستگاه رابط انسانی یک پروتکل USB است که به رایانه شما اجازه می دهد بدون نیاز به نصب درایورهای سفارشی برای هر دستگاه ، ورودی صفحه کلیدها و موس کامپیوتر را تشخیص داده و بپذیرد.

توجه: در صورت بروزرسانی سیستم عامل ، همانطور که در اینجا نشان داده شده است ، می توانید از Uno نیز استفاده کنید.

مرحله 1: مواد

برای این پروژه به موارد زیر نیاز دارید:

1x میکروکنترلر با قابلیت HID (تعداد معدودی مانند Arduino micro ، Due & leonardo وجود دارد ، من از Arduino Leonardo استفاده خواهم کرد)

1 برابر کابل USB به آردوینو (برای لئوناردو میکرو USB است)

3x دکمه بازی (اینها را خریدم)

1 برابر تخته نان بدون لحیم

مقاومتهای 3x3k 10 اهم

مقاومت 3x320 اهم

سیم های بلوز

البته می توانید دکمه های بیشتری اضافه کنید یا همه چیز را به یک تخته نان بچسبانید تا همه چیز دائمی شود.

مرحله 2: نمونه سازی

نمونه سازی
نمونه سازی
نمونه سازی
نمونه سازی
نمونه سازی
نمونه سازی

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

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

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

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

#شامل "Keyboard.h"

const int buttonLeft = A0؛ // پین ورودی برای دکمه فشاری

const int buttonRight = A1؛ const int buttonUp = A2؛

int previousButtonStateLeft = HIGH؛ // برای بررسی وضعیت یک pushButton

int previousButtonStateRight = HIGH؛ int previousButtonStateUp = HIGH؛

void setup () {

// پین pushButton را ورودی کنید: pinMode (buttonLeft، INPUT)؛ pinMode (buttonRight ، INPUT) ؛ pinMode (buttonUp ، INPUT) ؛ // مقداردهی اولیه کنترل روی صفحه کلید: Keyboard.begin ()؛ }

حلقه خالی () {

// دکمه فشار را بخوانید: int buttonStateLeft = digitalRead (buttonLeft) ؛ // اگر حالت دکمه تغییر کرده باشد ، اگر ((buttonStateLeft! = previousButtonStateLeft) // و در حال حاضر فشار داده شده است: && (buttonStateLeft == HIGH)) {// پیام Keyboard.print ("a") را تایپ کنید ؛ } // دکمه فعلی را برای مقایسه دفعه بعد ذخیره کنید: previousButtonStateLeft = buttonStateLeft؛

// دکمه فشار را بخوانید:

int buttonStateRight = digitalRead (buttonRight) ؛ // اگر حالت دکمه تغییر کرده باشد ، اگر ((buttonStateRight! = previousButtonStateRight) // و در حال حاضر فشار داده شده است: && (buttonStateRight == HIGH)) {// پیام Keyboard.print ("w") را تایپ کنید ؛ } // دکمه فعلی را برای مقایسه دفعه بعد ذخیره کنید: previousButtonStateRight = buttonStateRight؛

// دکمه فشار را بخوانید:

int buttonStateUp = digitalRead (buttonUp) ؛ // اگر حالت دکمه تغییر کرده باشد ، اگر ((buttonStateUp! = previousButtonStateUp) // و در حال حاضر فشار داده شده است: && (buttonStateUp == HIGH)) {// پیام Keyboard.print ("d") را تایپ کنید ؛ } // وضعیت دکمه فعلی را برای مقایسه دفعه بعد ذخیره کنید: previousButtonStateUp = buttonStateUp؛ }

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

#شامل "Keyboard.h"

const int buttonLeft = A0؛ // پین ورودی برای دکمه فشاری

const int buttonRight = A1؛ const int buttonUp = A2؛

void setup () {

// پین pushButton را ورودی کنید: pinMode (buttonLeft، INPUT)؛ pinMode (buttonRight ، INPUT) ؛ pinMode (buttonUp ، INPUT) ؛ // مقداردهی اولیه کنترل روی صفحه کلید: Keyboard.begin ()؛ }

حلقه خالی () {

// دکمه فشار را بخوانید: int buttonStateLeft = digitalRead (buttonLeft) ؛ if (buttonStateLeft == HIGH) // اگر دکمه فشار داده شود {// یک پیام Keyboard.print ("a") تایپ کنید ؛ تأخیر (50) ؛ // تأخیر برای گزاف گویی و به شما اجازه می دهد تا کامپیوتر را تسریع کنید}

// دکمه فشار را بخوانید:

int buttonStateRight = digitalRead (buttonRight) ؛ if (buttonStateRight == HIGH) // اگر دکمه فشار داده شود {// یک پیام Keyboard.print ("w") تایپ کنید ؛ تأخیر (50) ؛ // تأخیر برای گزاف گویی و به شما امکان می دهد رایانه را تسریع کنید}

// دکمه فشار را بخوانید:

int buttonStateUp = digitalRead (buttonUp) ؛ if (buttonStateUp == HIGH) // اگر دکمه فشار داده شود {// یک پیام Keyboard.print ("d") تایپ کنید ؛ تأخیر (50) ؛ // تاخیر برای برگشت و به شما اجازه می دهد تا رایانه را تسریع کنید}}

بسته به نیاز شما ، همیشه می توانید از ترکیبی از هر دو روش استفاده کنید.

مرحله 3: برش محفظه با لیزر

برش لیزری مورد
برش لیزری مورد

برای مورد من از mdf 3 میلی متری ، با درج پلکسی گلاس 2 میلی متر استفاده کردم. من درج را اضافه کردم زیرا می خواهم بعداً LED هایی را در قسمت داخلی بدنه اضافه کنم تا زیبا و درخشان شود.

ابعاد خود را در makercase وارد کردم و فایل svg را بارگیری کردم. من آن را در Illustrator باز کردم و سوراخ هایی را که می خواستم اضافه کردم. اگر Illustrator ندارید ، می توانید از Inkscape برای این مرحله استفاده کنید.

البته نیازی به استفاده از برش لیزری ندارید ، زیرا این یک جعبه ساده با چند سوراخ در آن است. ایجاد آن با استفاده از ابزارهای برقی سنتی (یا حتی ابزار دستی!) باید بسیار آسان باشد. من بسیار تنبل هستم و به دستگاه برش لیزری دسترسی داشتم.

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

لحیم کاری دکمه های بازی
لحیم کاری دکمه های بازی
لحیم کاری دکمه های بازی
لحیم کاری دکمه های بازی
لحیم کاری دکمه های بازی
لحیم کاری دکمه های بازی

یک دکمه بازی (یا حداقل مال من) از سه قسمت تشکیل شده است. بدنه پلاستیکی ، نگهدارنده LED (با LED در آن) و سوئیچ میکرو. میکرو سوئیچ بخش دکمه واقعی دکمه است و همان چیزی است که برای اتصال به آردوینو نیاز دارید. سه پایانه (قطعات فلزی که به هم می چسبند ، جایی که سیم های خود را لحیم می کنید) روی میکرو سوئیچ وجود دارد. آنچه در بالا (یا پایین ، آنچه شما می خواهید) زمین است. دو پایانه دیگر Normal Open (NO) و Normal Closed (NC) هستند. NO به این معنی است که اگر سوئیچ فشار داده شود ، اتصال ایجاد می کند. NC به این معنی است که اگر دکمه فشار داده شود ، اتصال قطع می شود. ما از NO برای این پروژه استفاده خواهیم کرد. من در تصاویر برچسب زمین ، NO و NC را بر روی میکرو سوئیچ خود نشان دادم.

دکمه های من روشن هستند بنابراین سیم ها را به نگهدارنده LED لحیم کردم. مطمئن شوید که سیم های خود را رنگ آمیزی کنید تا بدانید آند کدام طرف است و کدام کاتد (طرف مثبت و منفی LED).

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

مرحله 5: دکمه ها را روی هم چیده و آنها را به برد خود متصل کنید

دکمه ها را روی هم چیده و آنها را به برد خود وصل کنید
دکمه ها را روی هم چیده و آنها را به برد خود وصل کنید
دکمه ها را روی هم چیده و آنها را به برد خود وصل کنید
دکمه ها را روی هم چیده و آنها را به برد خود وصل کنید
دکمه ها را روی هم چیده و آنها را به برد خود وصل کنید
دکمه ها را روی هم چیده و آنها را به برد خود وصل کنید
دکمه ها را روی هم چیده و آنها را به برد خود وصل کنید
دکمه ها را روی هم چیده و آنها را به برد خود وصل کنید

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

برای اتصال سوئیچ ها به برد ، دکمه های فشاری را که ممکن است به آن اضافه کرده باشید یا حذف کرده اید بردارید. سیم منتهی از زمین سوئیچ میکرو را به زمین آردوینو و مقاومت (جایی که پای دکمه فشاری بود) وصل کنید. سیم منتهی از NO سوئیچ میکرو را به 5 ولت آردوینو وصل کنید.

برای سیمهای LED سیم منفی را به زمین و مثبت را از طریق مقاومت 220OHM به 5 ولت وصل کنید. اگر آنها را اینگونه سیم کشی کنید ، همیشه روشن خواهند بود. در صورت تمایل می توانید آنها را در کد اضافه کرده و آنها را روشن و خاموش کنید.

مرحله ششم: کدگذاری جهنم

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

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

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

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

بگذارید از آن سفر صرفه جویی کنم ، در اینجا کد کار آمده است:

سلب مسئولیت: این متن پس از ساعت ها کدگذاری و رفع اشکال یک کد بسیار ساده نوشته شده است. لطفاً علائم ناامیدی را نادیده بگیرید و بر روی کد کاری که در زیر پست شده تمرکز کنید ؛)

#شامل "Keyboard.h"#تعریف دکمه مقدار 3

int buttonPin = {

A0 ، A1 ، A2} ؛ // دکمه ها کجا هستند؟ int asciiLetter = {97 ، 100 ، 119} ؛ // نامه ها در ASCII ، در اینجا: a ، d ، w int buttonState [buttonAmount] ؛ // آیا دکمه فشار داده شده است یا خیر؟

void setup () {

برای (int i = 0؛ i <buttonAmount؛ i ++) {// از طریق آرایه pinMode (buttonPin ، INPUT)؛ // همه پین ها را روی ورودی تنظیم کنید}}

حلقه خالی () {

برای (int i = 0 ؛ i <buttonAmount ؛ i ++) // از طریق آرایه {buttonState = digitalRead (buttonPin ) ؛ // دکمه ها چکار می کنند؟ if (buttonState == HIGH) {// اگر دکمه را فشار دهید Keyboard.press (asciiLetter ) ؛ // در صورت فشردن دکمه {Keyboard.release (asciiLetter ) ، حرف مربوطه را ارسال کنید} else //. // نامه را رها کنید}}

}

مرحله 7: همه چیز کار می کند

از plug & play کنترل سفارشی خود لذت ببرید!

اگر این دستورالعمل را دوست داشتید ، لطفاً در مسابقه به من رای دهید!

توصیه شده: