فهرست مطالب:

Jammarduino DUE - DIY PC to Jamma Interface for Arcade Cabinets: 6 مرحله
Jammarduino DUE - DIY PC to Jamma Interface for Arcade Cabinets: 6 مرحله

تصویری: Jammarduino DUE - DIY PC to Jamma Interface for Arcade Cabinets: 6 مرحله

تصویری: Jammarduino DUE - DIY PC to Jamma Interface for Arcade Cabinets: 6 مرحله
تصویری: How to wire a 2 player Jamma wiring harness (unprofessionally) 2024, نوامبر
Anonim
Jammarduino DUE - DIY PC to Jamma Interface for Arcade Cabinets
Jammarduino DUE - DIY PC to Jamma Interface for Arcade Cabinets

این دستورالعمل به شما نشان می دهد که چگونه می توانید یک سپر ساده برای Arduino DUE ایجاد کنید تا بتوانید یک دستگاه بازی اصلی را با رزولوشن پایین CRT و اتصال jamma به رایانه خود متصل کنید.

لوله های اصلی سپر عبارتند از:

- برای تقویت سیگنال ویدئویی که از کارت گرافیک خارج می شود (ولتاژ بسیار کم برای مانیتور اصلی Arcade CRT)

- برای محافظت از مانیتور CRT با وضوح پایین در برابر سیگنالهای همگام سازی افقی با فرکانس بسیار بالا

- برای "ترجمه" دکمه بر روی کنترل پنل بازی به چیزی که کامپیوتر می تواند انجام دهد فشار می دهد

من به شما نحوه گسترش استفاده از رابط برای کنترل چرخ ها و چرخنده های Arcade Racing را نشان خواهم داد.

توجه: سپر سیگنال همگام سازی ویدئو را به فرکانسهای پایین مجبور نمی کند: شما برای این کار به نرم افزار خاصی نیاز دارید. به شما پیشنهاد می کنم از emudrivers CRT یا Soft15KHz استفاده کنید.

مرحله 1: سخت افزار

فرض می کنم شما یک ایستگاه لحیم کاری و مقداری قلع با دست دارید و می دانید چگونه از آنها استفاده کنید. با توجه به اینکه تقویت کننده ویدئو یک SMD با ارتفاع 0.65 میلی متر است ، به شما پیشنهاد می کنم برای لحیم کاری آن میکروب ، مقداری شار لحیم کاری بخرید. من از یک قلم ارزان قیمت "بدون تمیز" Rosing Mildly Activated (RMA) با نتایج عالی استفاده کردم.

رابط کاربری از موارد زیر تشکیل شده است:

- 1 عدد برد میکروکنترلر Arduino DUE

- 1x تقویت کننده ویدئویی THS7374

- 1 برابر آداپتور TSSOP14 به DIP14

- تقویت کننده صوتی 1 برابر

- 1 انگشت فشرده jamma

- تخته نمونه 1x 5x7 سانتی متر ، دو طرفه

- 1 دیود 1N4148

- مقاومت 7x 1Kohm

- مقاومت 1x 820 اهم

- مقاومت 3x220 اهم

- 1x خط نوار ، فاصله 2.54 میلی متر

- 1 برابر کابل VGA

- 1 برابر کابل صدا

مرحله 2: شماتیک

طرحواره ها
طرحواره ها

در اینجا یک طرح رنگی از پروژه کامل است. نه چندان ارتدوکس ، اما به امید پیروی از آن آسان تر است.

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

- خطوط رنگی از اتصال PC VGA به تقویت کننده ویدئو می آید. مقاومت 1 کیلو اهم به زمین جریان را به ورودی تقویت کننده ویدئو کاهش می دهد. در سمت خروجی یک سری مقاومت جریان را به CRT بازی کم می کند.

- خط همگام سازی به نوعی پیچیده تر است: همگام سازی جداگانه از VGA کامپوزیت می شود ، ابتدا با تقسیم ولتاژ پایین می آید تا به مشخصات Arduino DUE (منطق 3.3 ولت) احترام بگذارد. تقسیم ولتاژ با فرض سیگنال همگام سازی 5V محاسبه می شود.

- تقویت کننده ویدئو (THS7374) می تواند در 3.3V یا 5V تغذیه شود. از آنجا که تغذیه در 5V اجازه می دهد تا برای طیف وسیع تری از ولتاژها/سیگنال های ورودی و این که THS7374 را می توان با 3.3V کنترل کرد حتی اگر در 5V آب مصرف شود ، من از راه 5V رفتم.

- زمین ویدئو ، زمین arduino DUE ، زمین THS7374 و اتصال اتصال jamma اتصال کوتاه دارند.

- خطوط آردوینو DUE 5V و Jamma 5V نباید کوتاه شود.

- از تقویت کننده صدا از کابل USB استفاده نکنید: به دلیل محدودیت های فعلی (به عنوان مثال PCU PC ATX) به منبع خارجی نیاز دارید. با این کار به پورت USB یا حتی رایانه خود آسیب می رسانید.

اتصال VGA: یک کلمه احتیاط است

من اخیراً فرصتی برای به روز رسانی رایانه شخصی استفاده شده با jammarduino DUE دارم. حتی اگر قبلاً آن را با دو رایانه مختلف آزمایش کرده بودم ، هر دو از کارت های ATI یک خانواده (ATI 9250 و 9550) استفاده می کردند. رایانه جدید مجهز به HD5750 با خروجی آنالوگ DVI (بدون VGA) بود. این من را مجبور به استفاده از آداپتور DVI به VGA (منفعل) کرد. خوب ، پس از برخی مشکلات ، متوجه شدم که کابل VGA متصل به آداپتور فقط باید زمین را به پین 5 اتصال VGA متصل کرده باشد ، نه پین های 6 تا 10 مانند آنچه در اکثر نمودارهای وب گزارش شده است. در صورتی که نمی توانید سیگنال همگام سازی را از کارت گرافیک خود مشاهده کنید ، این را در نظر داشته باشید.

مرحله 3: طرح/کد

طرح/کد
طرح/کد

ابتدا باید Arduino IDE را نصب کنید. شما همچنین باید SAM Cortex M3 Core را نصب کنید (به طور پیش فرض وجود ندارد). نکته آخر اینکه درایورهای Arduino DUE را نصب کنید. برای کسب اطلاعات بیشتر به آموزش رسمی "شروع به کار با Arduino Due" مراجعه کنید.

طرح مورد نیاز برای بارگذاری در Arduino DUE در اینجا پیوست شده است. از حالت فشرده خارج کرده و "jammarduinoDUE.ino" را در Arduino IDE بر روی خود بارگذاری کنید ، سپس از طریق پورت "programming" در arduino DUE بارگذاری کنید. پس از بارگذاری طرح با موفقیت ، کابل USB را از درگاه "برنامه نویسی" جدا کرده و Arduino DUE را از طریق پورت "Native USB" وصل کنید ، در غیر این صورت قسمت ورودی کد کار نمی کند.

اساساً ، Arduino DUE فرکانس همگام سازی را اندازه گیری می کند و هنگامی که همگام سازی برای CRT با رزولوشن پایین بسیار زیاد است ، تقویت کننده ویدئو را غیرفعال می کند. Arduino DUE ورودی های کنترل پنل را نیز کنترل می کند و کلیدهای پیش فرض MAME را با فشار یک دکمه خاص ارسال می کند. یک عملکرد تغییر (فعال با فشار دادن دکمه P1 START) نیز مانند رابط های تجاری گنجانده شده است.

در جدول نقشه کلید پیش فرض. می توانید نقشه کلید پیش فرض را تغییر دهید یا دکمه ها را به دلخواه مستقیماً روی طرح به راحتی اضافه کنید.

به عنوان مثال ، اگر می خواهید کلیدهای کنترل صدا را برای شبیه ساز خود اختصاص دهید ، ابتدا باید آن کلیدها را (مثلاً صفحه کلید "+" برای افزایش صدا و صفحه کلید "-" برای کاهش صدا) را در منوی کلیدهای emu خود تعریف کنید. سپس کلید shift را به دکمه هایی که می خواهید افزایش یا کاهش صدا به آنها اختصاص داده شود ، اضافه کنید. فرض کنید من می خواهم با فشار دادن کلید shift و دکمه پخش کننده 3 صدا را افزایش دهم. خط را تغییر خواهم داد

{26 ، HIGH ، 0 ، 180 ، 180} ، // فاصله - P1 B3

به

{26 ، HIGH ، 0 ، 180 ، 223} ، // فاصله - P1 B3 (+)

این "223" کد کاراکتر ASCII برای صفحه کلید "+" است.

به شما اجازه می دهم نحوه انتساب "-" (یا هر چیزی که ترجیح می دهید) را به عملکرد "کاهش صدا" به عنوان تمرین اختصاص دهید (نکته: کد ASCII 222):)

لطفاً به خاطر داشته باشید که در MAME فقط می توانید حجم حالت سرویس را تعیین کنید ، نه حجم تقلید عمومی. این بدان معناست که اگر برد شبیه سازی شده اجازه کنترل حجم نرم افزار را ندهد ، میزان صدا تحت تأثیر قرار نمی گیرد.

مرحله 4: در مورد تأخیر ورودی چطور؟

برخی آزمایش ها را انجام دادم تا ببینم کد چقدر می تواند تأخیر ایجاد کند. خوب ، با ارسال 3 دکمه همزمان فشار دهید یک حلقه کامل حدود 4 میلی ثانیه طول می کشد ، بنابراین کمتر از 33 میلی ثانیه یک فریم با 30 فریم بر ثانیه دوام می آورد.

مرحله 5: کابینت های Jamma Racing چطور؟

کابینت های Jamma Racing چطور؟
کابینت های Jamma Racing چطور؟

چرخ پتانسیومتر

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

اول از همه ، کتابخانه Joystick را بارگیری و نصب کنید (در حال حاضر گفته می شود تنها نسخه 1 کتابخانه با arduino DUE سازگار است ، اما هنوز هم کتابخانه بسیار خوبی است).

سپس ، چند خط زیر را به طرح مرحله 4 اضافه کنید تا بتوانید به راحتی چرخ را کنترل کنید (جایی که خطوط به عنوان تمرین به شما واگذار می شود …)

#عبارتند از

int deadZone = 0 ؛

void setup () {

Joystick.begin ()؛}}

حلقه خالی () {

int readPot = analogRead (A3) ؛

int wheelPos = نقشه (readPot ، 0 ، 1023 ، -127 ، 127) ؛

if (wheelPos> deadZone || wheelPos <-deadZone) {Joystick.setXAxis (wheelPos)؛}

else {Joystick.setXAxis (0)؛}

}

همانطور که می بینید ، در صورت لزوم می توانید یک منطقه Deadzone تنظیم کنید (در یک چرخ بازی خوب خوب است که آن را روی صفر قرار دهید).

سیم کشی پتانسیومتر به Arduino DUE ساده است: پین های کناری پتانسیومتر به +3.3V و GND ، پین برف پاک کن به پورت آنالوگ arduino DUE می روند (برای مرجع به عکس مراجعه کنید). من در اینجا پین آنالوگ 3 (A3) را به عنوان ورودی برف پاک کن پتانسیومتر چرخ تعریف کردم ، اما می توانید پین آنالوگ را به بهترین شکل با نیازهای خود تنظیم کنید.

PS: آیا می دانید که پدال ها در کابینت های مسابقه اغلب توسط پتانسیومتر کنترل می شوند ، از نظر فنی چرخ ها و پدال ها یک دستگاه با شکل متفاوت هستند؟ این بدان معناست که از کد موجود در اینجا می توان برای کنترل پدال های اصلی بازی نیز استفاده کرد ؛)

چرخ نوری

اگر چرخ شما نوری است ، می توانید دوباره آن را به راحتی تغییر دهید ، با کمی تغییر در طرح اولیه.

یک راه حل بسیار رایج برای رمزگذارهای Arcade نوری (اسپینرهای Taito ، رمزگذارهای چرخ Atari و غیره) این است:

1. OptoA OUT

2. +5V

3. GND

4. OptoB OUT

2. و 3. را به Arduino DUE 5V و GND و 1. و 4. به هر پین دیجیتالی که دوست دارید توجه کنید که برای کاهش خروجی 5 ولت از رمزگذار نوری به 3.3 ولت آردوینو DUE می توانید تقسیم ولتاژ را ضروری کنید. به خروجی های OptoA و/یا OptoB 5V را مستقیماً به پین های ورودی arduino DUE خود ارسال نکنید ، زیرا احتمالاً آن ورودی ها یا حتی کل برد را سرخ می کنید. به شما هشدار داده شده است.

در طرح اصلی اینجا ، من از پین دیجیتال 2 و پین 3 دیجیتال به عنوان خروجی نوری A و خروجی نوری B استفاده می کنم.

#عبارتند از

boolean optA_state = HIGH؛

int xAxisMov = 2؛

void setup () {

pinMode (2 ، INPUT_PULLUP) ؛ // OptA

pinMode (3 ، INPUT_PULLUP) ؛ // OptB

Mouse.begin ()؛

}

حلقه خالی () {

if (optA_state == HIGH && digitalRead (2) == LOW) {

optA_state =! optA_state؛

if (digitalRead (3) == HIGH) {Mouse.move (xAxisMov، 0، 0)؛} else {Mouse.move (-xAxisMov، 0، 0)؛}}} // حلقه پایان

این کدگذاری نوری با وضوح پایین 1X شمارش است. این برای برنامه های Arcade بیش از حد کافی است ، اما می توانید با افزودن چند خط کد ، وضوح تصویر را به راحتی افزایش دهید.

PS: آیا می دانید که چرخ های اپتیکال و اسپینرهای بازی از نظر فنی یک دستگاه با شکل متفاوت هستند؟ آیا می دانید که توپ بال از نظر فنی یک چرخنده 2 محوری است؟ این بدان معناست که کد موجود در اینجا می تواند برای کنترل چرخنده های اصلی بازی و با تعداد کمی ، تغییرات ساده نیز استفاده شود.)

مرحله ششم: چند عکس ، یا اتفاق نیفتاد

تعدادی عکس ، یا اتفاق نیفتاد!
تعدادی عکس ، یا اتفاق نیفتاد!
تعدادی عکس ، یا اتفاق نیفتاد!
تعدادی عکس ، یا اتفاق نیفتاد!
تعدادی عکس ، یا اتفاق نیفتاد!
تعدادی عکس ، یا اتفاق نیفتاد!
تعدادی عکس ، یا اتفاق نیفتاد!
تعدادی عکس ، یا اتفاق نیفتاد!

در اینجا تصاویری از سپر من ساخته شده است. این یک کار سطح بالا نیست (شرط می بندم ، من یک حرفه ای نیستم) ، اما 100٪ در Jamma Arcade Cabinet من تکان می خورد!

توصیه شده: