Mundarija:

Jammarduino DUE - Arja shkaflari uchun Jamma interfeysiga DIY kompyuter: 6 qadam
Jammarduino DUE - Arja shkaflari uchun Jamma interfeysiga DIY kompyuter: 6 qadam

Video: Jammarduino DUE - Arja shkaflari uchun Jamma interfeysiga DIY kompyuter: 6 qadam

Video: Jammarduino DUE - Arja shkaflari uchun Jamma interfeysiga DIY kompyuter: 6 qadam
Video: как сделать Propeller LED Pendulum Clock, используя Arduino NANO, JLCPCB 2024, Noyabr
Anonim
Jammarduino DUE - Arja shkaflari uchun Jamma interfeysiga DIY kompyuter
Jammarduino DUE - Arja shkaflari uchun Jamma interfeysiga DIY kompyuter

Bu ko'rsatma sizga Arduino DUE uchun past ekranli CRT va jamma ulagichi bo'lgan haqiqiy arja mashinasini ulash uchun oddiy qalqonni qanday yaratishni ko'rsatib beradi.

Qalqonning asosiy quyish joylari:

- video kartadan chiqayotgan video signalni kuchaytirish uchun (haqiqiy Arcade CRT monitor uchun kuchlanish juda past)

- past aniqlikdagi CRT monitoringizni gorizontal sinxronlash signallaridan juda yuqori chastotali himoya qilish uchun

- Arja boshqaruv panelidagi "tarjima qilish" tugmachasini kompyuter boshqarishi mumkin bo'lgan narsaga bosish

Men sizga Arja Racing g'ildiraklari va spinnerlarini boshqarish uchun interfeysni qanday kengaytirishni ko'rsataman.

E'tibor bering: qalqon video sinxronizatsiya signalini past chastotalarga majburlamaydi: buning uchun sizga maxsus dasturiy ta'minot kerak. Sizga CRT emudriverlari yoki Soft15KHz dan foydalanishni taklif qilaman.

1 -qadam: Uskuna

Menimcha, sizda lehim stantsiyasi va qo'lingiz bilan qalay bor va siz ulardan qanday foydalanishni bilasiz. Video kuchaytirgich 0,65 mm balandlikdagi SMD bo'lgani uchun sizga mikrobni lehimlash uchun lehim oqimi sotib olishni taklif qilaman. Men juda yaxshi natijalarga ega bo'lgan "toza bo'lmagan" Rosing Mildly Activated (RMA) qalamidan foydalandim.

Interfeys quyidagilardan iborat:

- 1 ta Arduino DUE mikrokontroller platasi

- 1x THS7374 video kuchaytirgich

- 1x TSSOP14 - DIP14 adapteri

- 1x audio kuchaytirgich

- 1x jamma barmog'i

- 1x 5x7 sm o'lchamdagi prototip taxtasi, ikki tomonlama

- 1x 1N4148 diodli

- 7x 1Kohm rezistorlar

- 1x820 ohmli qarshilik

- 3x 220 ohmli qarshilik

- 1x tasma chizig'i, oralig'i 2,54 mm

- 1x VGA kabeli

- 1x audio kabel

2 -qadam: sxemalar

Sxemalar
Sxemalar

Bu erda butun loyihaning rangli sxemasi. Umid qilamanki, pravoslav emas, lekin amal qilish osonroq.

Tarmoqlar ko'rinadigan darajada oson:

- rangli chiziqlar VGA kompyuter ulagichidan video kuchaytirgichga keladi; erga 1Kohmlik rezistor video kuchaytirgich kirishiga tokni pasaytiradi. Chiqish tomonida ketma -ket qarshilik CRT arcade tokini pasaytiradi.

- sinxronizatsiya chizig'i qaysidir ma'noda "murakkab": VGA -dan alohida sinxron kompozitsion bo'lib, keyin Arduino DUE texnik xususiyatlariga (3.3V mantiq) rioya qilish uchun kuchlanish bo'luvchi tomonidan tushiriladi. Voltaj bo'linishi 5V sinxronlash signalini hisobga olgan holda hisoblanadi.

- video kuchaytirgich (THS7374) 3,3V yoki 5V kuchlanishli bo'lishi mumkin; 5V kuchlanishi kirish voltajlari/signallarining kengroq diapazoniga imkon beradi va THS7374 ni 5V da sharbatlangan bo'lsa ham, 3,3V bilan boshqarish mumkin, men 5V yo'lni tanladim.

- video topraklama, arduino DUE topraklama, THS7374 va jamma ulagichi qisqa tutashgan.

- Arduino DUE 5V va Jamma 5V liniyalari QISQA O'NGIRILMASIN.

- USB kabelidan audio kuchaytirgichni olmang: buning uchun sizga tashqi manba kerak, chunki joriy chegaralar (ya'ni, PC ATX PSU). Shunday qilib, siz USB portingizga yoki hatto kompyuteringizga zarar etkazasiz.

VGA ulagichi: ogohlantirish

Yaqinda men jammarduino DUE bilan ishlatilgan kompyuterni yangilash imkoniyatiga ega bo'ldim. Agar men ilgari uni ikki xil kompyuterda sinovdan o'tkazgan bo'lsam ham, ular bir oilaning ATI kartalaridan foydalanishgan (ATI 9250 va 9550). Yangi kompyuter HD5750 bilan jihozlangan, u bitta DVI analogli chiqishga ega (VGA yo'q). Bu meni (passiv) DVI -VGA adapteridan foydalanishga majbur qildi. Xo'sh, biroz qiynalganimdan so'ng, adapterga ulangan VGA kabeli faqat VGA ulagichining 5 -piniga ulangan bo'lishi kerak, tarmoqdagi 6 dan 10 gacha bo'lgan pinlar emas. Agar siz video kartangizdan hech qanday sinxronizatsiya signalini ko'rmasangiz, buni yodda tuting.

3 -qadam: eskiz/kod

Eskiz/kod
Eskiz/kod

Avval Arduino IDE -ni o'rnatishingiz kerak; siz ham SAM Cortex M3 Core ni o'rnatishingiz kerak (sukut bo'yicha mavjud emas). Va nihoyat, Arduino DUE drayverlarini o'rnating. Eng dolzarb ma'lumotlar uchun "Arduino Due bilan ishlashni boshlash" rasmiy qo'llanmasiga murojaat qiling.

Arduino DUE -ga yuklashingiz kerak bo'lgan eskiz shu erda biriktirilgan. Arduino IDE -ga "jammarduinoDUE.ino" faylini oching va yuklang, so'ngra "dasturlash" porti orqali arduino DUE -ga yuklang. Eskiz muvaffaqiyatli yuklanganidan so'ng, USB kabelini "dasturlash" portidan uzing va Arduino DUE -ni "Native USB" porti orqali ulang, aks holda kodning kirish qismi ishlamaydi.

Asosan, Arduino DUE sinxronlash chastotasini o'lchaydi va sinxronlash past darajadagi CRT uchun juda yuqori bo'lsa, video kuchaytirgichni o'chirib qo'yadi. Arduino DUE boshqaruv panelidan kirishni boshqaradi, ma'lum tugmachalarni bosish orqali standart MAME tugmalarini yuboradi. Bundan tashqari, tijorat interfeyslari kabi o'tish funktsiyasi (P1 START tugmachasini bosib ushlab turish orqali faollashtiriladi).

Jadvalda standart kalit xaritasi. Siz standart kalit xaritasini o'zgartirishingiz yoki o'zingiz xohlaganingizcha tugmalar qo'shishingiz mumkin.

Masalan, agar siz emulyatoringiz uchun ovoz balandligini boshqarish tugmachalarini tayinlamoqchi bo'lsangiz, avval siz emu tugmachalari menyusida bu tugmachalarni (masalan, ovoz balandligi uchun "+" va ovoz balandligini pasaytirish uchun--"klaviatura) belgilashingiz kerak; keyin ovoz balandligi yoki kamayishini belgilashni xohlagan tugmalarga o'zgartirilgan tugmachani qo'shing. Aytaylik, men shift tugmachasini va 1 -o'yinchi 3 -tugmani bosib ovoz balandligini oshirmoqchiman. Men chiziqni o'zgartiraman

{26, YUQORI, 0, 180, 180}, // bo'sh joy - P1 B3

ga

{26, HIGH, 0, 180, 223}, // bo'sh joy - P1 B3 (+)

Bu "223" - bu "+" klaviaturasi uchun ASCII belgilar kodi.

Men sizga "-" (yoki xohlagan narsani) "ovozni pasaytirish" funktsiyasini mashq sifatida qanday belgilashni tushunishga ruxsat beraman (Maslahat: ASCII kodi 222):)

Shuni yodda tutingki, MAME -da siz umumiy emulyatsiya hajmini emas, faqat xizmat ko'rsatish rejimining hajmini belgilashingiz mumkin; bu shuni anglatadiki, agar taqlid qilingan karta dasturiy ta'minot hajmini boshqarishga ruxsat bermasa, ovoz balandligi ta'sir qilmaydi.

4 -qadam: Kirish kechikishi haqida nima deyish mumkin?

Men kodni qanchalik kechiktirishi mumkinligini bilish uchun ba'zi testlarni o'tkazdim; Xo'sh, 3 tugmachani yuborish bilan bir vaqtning o'zida to'liq tsiklni bajarish uchun taxminan 4 milodiy vaqt kerak bo'ladi, hozircha 33 milodiydan kam ramka 30 FPS tezlikda ishlaydi.

5 -qadam: Jamma poyga shkaflari haqida nima deyish mumkin?

Jamma poyga shkaflari haqida nima deyish mumkin?
Jamma poyga shkaflari haqida nima deyish mumkin?

Potentsiometr g'ildiragi

Agar sizning kabinetingiz poyga shkafi bo'lsa, g'ildirak potentsiometrga asoslangan bo'lishi mumkin (siz boshqaruv panelining orqa tomonida 5 kohmlik potansiyometrni ko'rishingiz mumkin).

Birinchidan, Joystick kutubxonasini yuklab oling va o'rnating (bugungi kunda kutubxonaning faqat 1 -versiyasi arduino DUE bilan mos keladi, lekin u hali ham juda yaxshi kutubxona).

Keyin, g'ildirakni oson boshqarish uchun 4 -qadamdagi eskizga quyidagi satrlarni qo'shing (chiziqlar qaerda joylashtiriladi, sizga mashq sifatida qoldiriladi …)

#qo'shing

int deadZone = 0;

bo'sh o'rnatish () {

Joystick.begin ();}

void loop () {

int readPot = analogRead (A3);

int wheelPos = xarita (readPot, 0, 1023, -127, 127);

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

boshqa {Joystick.setXAxis (0);}

}

Ko'rib turganingizdek, agar kerak bo'lsa, o'lik zonani o'rnatishingiz mumkin (yaxshi ishlaydigan arja g'ildiragida uni nolga qo'yish yaxshidir).

Potentsiometrni Arduino DUE -ga ulash juda oddiy: potentsiometrning yon pimlari +3.3V va GND ga, artish pimi arduino DUE analog portiga o'tadi (ma'lumot uchun rasmga qarang). Men bu erda 3 -gachasi analog pinni (A3) g'ildirak potansiyometrini o'chirish moslamasi sifatida aniqladim, lekin siz o'zingizning ehtiyojlaringizga mos keladigan analog pinni o'rnatishingiz mumkin.

PS: poyga shkaflaridagi pedallar ko'pincha potentsiometr tomonidan boshqarilishini bilasizmi, texnik jihatdan g'ildiraklar va pedallar boshqacha shaklga ega. Bu shuni anglatadiki, bu erda kod haqiqiy arja pedallarini boshqarish uchun ishlatilishi mumkin;)

Optik g'ildirak

Agar sizning g'ildirakingiz optik bo'lsa, uni dastlabki eskizga o'zgartirish kiritish orqali ham osonlikcha boshqarish mumkin.

Optik Arja kodlovchilar uchun juda keng tarqalgan pinout (Taito spinners, Atari g'ildiraklar kodlagichlari va boshqalar):

1. OptoA OUT

2. +5V

3. GND

4. OptoB OUT

2. va 3. ni Arduino DUE 5V va GND ga, va 1. va 4. har qanday raqamli pinga ulang, siz optik enkoderdan 5V kuchlanishni 3.3V arduino DUE boshqarishi mumkin bo'lgan kuchlanish taqsimlagichini ajratish kerak.. OptoA va/yoki OptoB 5V chiqishlarini to'g'ridan -to'g'ri arduino DUE kirish pinlariga yubormang, aks holda siz bu kirishni yoki hatto butun kartani qovurasiz. Sizga ogohlantirildi.

Bu erda eskizda men raqamli pin 2 va raqamli pin 3 ni optik A va optik chiqish B sifatida ishlataman.

#qo'shing

mantiqiy optA_state = YUQORI;

int xAxisMov = 2;

bo'sh o'rnatish () {

pinMod (2, INPUT_PULLUP); // OptA

pinMod (3, INPUT_PULLUP); // OptB

Sichqoncha.begin ();

}

void loop () {

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

optA_state =! optA_state;

if (digitalRead (3) == YUQORI) {Mouse.move (xAxisMov, 0, 0);} boshqa {Sichqoncha ko'chirish (-xAxisMov, 0, 0);}}} // loop oxiri

Bu past o'lchamli 1X hisoblash optik kodlash. Bu Arja ilovalari uchun etarli emas, lekin siz ba'zi kod qatorlarini qo'shish orqali piksellar sonini osongina ko'tarishingiz mumkin.

PS: siz bilasizmi, optik arja g'ildiraklari va arja aylantirgichlari texnik jihatdan boshqa shaklga ega bo'lgan bir xil qurilma? Bilasizmi, trekbollar texnik jihatdan 2 o'qli aylantiruvchi. Bu shuni anglatadiki, bu erda kod haqiqiy arja aylantirgichlarini boshqarish uchun ishlatilishi mumkin va ozgina trek to'plarini o'zgartirishi mumkin;)

6 -qadam: Ba'zi rasmlar, yoki bu sodir bo'lmadi

Ba'zi rasmlar, yoki bu sodir bo'lmadi!
Ba'zi rasmlar, yoki bu sodir bo'lmadi!
Ba'zi rasmlar, yoki bu sodir bo'lmadi!
Ba'zi rasmlar, yoki bu sodir bo'lmadi!
Ba'zi rasmlar, yoki bu sodir bo'lmadi!
Ba'zi rasmlar, yoki bu sodir bo'lmadi!
Ba'zi rasmlar, yoki bu sodir bo'lmadi!
Ba'zi rasmlar, yoki bu sodir bo'lmadi!

Mana men yasagan qalqonning rasmlari. Bu yuqori darajadagi ish emas (garchi men professional emasman), lekin bu mening Jamma Arkada kabinetida 100% tebranmoqda!

Tavsiya: