Mundarija:

Xbox 360 boshqaruvchi akselerometr/girro boshqaruvi: 7 qadam
Xbox 360 boshqaruvchi akselerometr/girro boshqaruvi: 7 qadam

Video: Xbox 360 boshqaruvchi akselerometr/girro boshqaruvi: 7 qadam

Video: Xbox 360 boshqaruvchi akselerometr/girro boshqaruvi: 7 qadam
Video: Тануки спускается с горы на большой скорости!! 🛹🌪🦊 - Tanuki Sunset Classic GamePlay 🎮📱 🇷🇺 2024, Noyabr
Anonim
Xbox 360 boshqaruvchi akselerometr/girro boshqaruvi
Xbox 360 boshqaruvchi akselerometr/girro boshqaruvi

Men Xbox 360 kontrollerim bilan Assetto Corsa bilan o'ynadim. Afsuski, analog tayoq bilan boshqarish juda qulay emas va menda g'ildirak o'rnatish uchun joy yo'q. Men butun boshqaruvni rulda ishlatishim mumkin bo'lganida, men boshqaruvchiga yaxshiroq boshqaruv mexanizmini qanday ulash kerakligini o'ylab ko'rishga harakat qildim.

Analog tayoq ikkita potentsiometrga ega. Biri vertikal harakatni, ikkinchisi gorizontal harakatni o'lchaydi. U har biriga 1,6 V o'tkazadi va tayoq qancha harakatlanganligini aniqlash uchun o'chirgichda ishlab chiqarilgan kuchlanishni o'lchaydi. Bu shuni anglatadiki, tayanch harakatini o'chirish pimiga ma'lum bir kuchlanishni berish orqali boshqarish mumkin. (Qo'shimcha ma'lumot bu erda:

Ushbu rejim Arduino -dan foydalanib, akselerometr o'qishidagi burchakni hisoblab chiqadi va uni DAC orqali analog tayoq harakatiga aylantiradi. Shuning uchun u analog tayoqchani kirish sifatida ishlatadigan har qanday o'yin bilan ishlashi kerak.

1 -qadam: Sizga kerak bo'ladi:

Asboblar:

  • Lehimlash temir
  • Lehim
  • Lehim so'rg'ich/bint
  • Tel -striptizchi
  • Tornavida, ehtimol Torx vintlardek sizning boshqaruv panelidagi vintlarga bog'liq (meniki - boshi)
  • Yelim (tercihen juda kuchli yopishtiruvchi emas, shuning uchun uni keyinchalik ajratish mumkin)
  • Arduino dasturlash uchun USB -ketma -ket adapter

Materiallar:

  • Xbox 360 tekshirgichi (ha!)
  • Arduino Pro Mini (yoki klon) (yaxshisi 3.3V. Agar siz 5V versiyasidan foydalansangiz, sizga kuchlanish kuchaytirgichi kerak bo'ladi)
  • MPU-6050 giroskopi/akselerometri
  • MCP4725 DAC (agar siz ikkala o'qni boshqarishni xohlasangiz, ikkitasi)
  • Bir oz ingichka sim
  • Lehimlashdan oldin hamma narsani sinab ko'rish uchun non paneli (ixtiyoriy, lekin tavsiya etiladi)

2 -qadam: Tekshirgichni ajratib oling

Tekshirgichni ajratib oling
Tekshirgichni ajratib oling
Tekshirgichni ajratib oling
Tekshirgichni ajratib oling
Tekshirgichni ajratib oling
Tekshirgichni ajratib oling

Ettita vintni olib tashlash kerak. Ulardan oltitasi aniq, lekin ettinchisi stiker ortida. O'ylaymanki, uni olib tashlash sizning kafolatingizni bekor qiladi, shuning uchun o'z xavfingiz ostida harakat qiling. Ko'p qo'llanmalar sizga Torx tornavida kerakligini aytishadi, lekin meniki - boshi, shuning uchun tekshirgichni tekshiring.

Shundan so'ng, orqa qopqoqni ehtiyotkorlik bilan echib oling. Agar siz old tomondan yirtib qo'ysangiz, tugmalar to'kiladi va ehtimol butun xonaga o'tadi. Uni pastdan ko'taring. Keyin ikkita tebranish motorini ajratib oling. (kichik vaznli chap tomonda, katta og'irlik esa o'ngda bo'lishi kerak) PCBni chiqarib oling va analog tayoqchalarning rezina qopqog'ini chiqarib oling. Ular shunchaki tortib olishadi.

Keyingi narsa, chap analog tayoqchani olib tashlashdir, shunda u bizning kirishimizga xalaqit bermaydi, lekin chap tetik mexanizmi yo'lda. Uni olib tashlash uchun siz potentsiometrning uchta pimini taxtaning old qismidan olib tashlashingiz kerak, keyin mexanizmni tenglikni kartasidan chiqarib oling.

Keyin, analog analog tayoqni ushlab turgan 14 ta pinni olib tashlang. Keyin tayoqni torting.

3 -qadam: Komponentlarni joyiga qo'ying

Komponentlarni joyiga yopishtiring
Komponentlarni joyiga yopishtiring
Komponentlarni joyiga yopishtiring
Komponentlarni joyiga yopishtiring

Siz PCB orqasi bilan korpus o'rtasida juda ko'p bo'sh joy borligini sezasiz. Bu hech narsani olib tashlamasdan, barcha jihozlarni qutiga qo'yish imkonini beradi.

Men buni keyinroq tushundim, lekin bu Arduino -dagi tiklash tugmachasini o'chirish uchun yaxshi vaqt bo'lardi. Agar shunday qilmasangiz, u korpusning orqa tomonini bosadi va agar siz uni qayta yig'ishda vintlardan birini juda qattiq tortsangiz, loyiha ishlamay qoladi.

Men izolyatsiyalash uchun har bir tenglikni orqa tomoniga ingichka kartani yopishtirdim, keyin uni nazoratchi PCB ga yopishtirdim. Men elim ishlatishni xohlamadim, lekin undan yaxshiroq yo'lni o'ylay olmadim.

Rasmdagi pozitsiyalar men topa oladigan eng yaxshi kombinatsiya. Arduino chap tomonda, reset tugmachasining chekkasi o'ng tetik mexanizmidan plastmassa qismiga, boshqa tomoni sim ostida va burchagi oq ulagichga iloji boricha yaqinroq. Ishda biroz bo'rtiq bor, lekin men uni qo'yish uchun yaxshiroq joy topa olmadim.

Akselerometr simning o'ng tomonida joylashgan. Bu iloji boricha tekis va to'g'ri bo'lishi kerak, aks holda siz kompensatsiyani to'ldirish uchun keyinroq kod yozishingiz kerak bo'ladi. E'tibor bering, korpusning orqa tomonida chiqadigan plastmassa bo'laklari bor, ularni oldini olish uchun ehtiyot bo'lish kerak. Men bildimki, siz chiqadigan plastmassa bo'laklarga lab bo'yog'i kabi yopishqoq va rang -barang narsalarni qo'yishingiz mumkin, so'ngra uning izini qaerda qoldirganini bilish uchun orqa qopqog'ini qo'ying.

DAC (lar) chap pastki burchakda joylashgan. Agar siz ikkala o'qni boshqarishni xohlasangiz, bu erda ikkita DAC -ni bir -birining ustiga qo'yish uchun etarli bo'sh joy bor. Siz ularni yopishtirishingiz shart emas. Ular faqat lehimli ulanishlar bilan o'z joylarida qoladilar. Agar siz ular orasiga kartani yopishtirib qo'ysangiz, SCL, SDA, VCC va GND -ga kira olmaslik uchun kartani kesib qo'yganingizga ishonch hosil qiling, chunki siz ularga ikki tomondan kira olasiz.

Agar siz ikkita DACdan foydalansangiz, manzil o'tish moslamasini almashtirishni va bu erda tasvirlanganidek, ulardan birining tortish qarshiligini o'chirishni unutmang: https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog -konverter-ulash bo'yicha qo'llanma

4 -qadam: simlarni lehimlang

Simlarni yoqing
Simlarni yoqing
Simlarni yoqing
Simlarni yoqing
Simlarni yoqing
Simlarni yoqing

Endi siz hamma narsani ulashingiz kerak. Barcha 2/3 qurilmalardan VCC, GND, SDA va SCL mos ravishda Arduino -dagi VCC, GND, A4 va A5 -ga ulangan bo'lishi kerak. DAClar eng qiyin qismdir. Agar sizda ikkitasi bo'lsa, siz ularni bir -biriga ulashingiz kerak, bir joyda ketayotganda, quvvat simlarini va chiziqlarni akselerometrga ulashingiz mumkin.

DAC -dagi OUT pinini analog tayoqchaning o'rta gorizontal potentsiometr pimi uchun ishlatilgan kontroller PCB pimiga ulash lozim. Ya'ni, analog tayoq qaerda bo'lsa, tepada uchta pin bor. Uni o'rtasiga ulang. Agar sizda boshqa DAC bo'lsa, uni xuddi shu tarzda vertikal potentsiometr piniga (chapdagi satr) ulang. Trigger almashtirilganda siz pimlarni orqa tomondan ololmaysiz, shuning uchun taxtaning old tomoniga sim o'tkazishingiz kerak. Analog tayoqchaning atrofida dumaloq plastmassa "devor" bor, lekin baxtga ko'ra, sizda simlarni o'tkazishingiz mumkin bo'lgan qulay bo'shliq bor. Simlarning korpusning old qismidagi vintli ustuniga to'sqinlik qilmasligiga ishonch hosil qiling.

Mening asl rejam Arduino -ni RAW piniga ulangan USB kabelidan 5V bilan quvvatlantirish edi, lekin men uni sinab ko'rganimda u ishlamadi. Arduino hech narsa ishlatmadi va Arduino ham, boshqaruvchi ham bir necha soniyadan so'ng o'chdi. Biroq, men taxtaning old tomonida, qora periferik rozetkaning yonida, ehtimol tashqi qurilmalarni quvvatlantirish uchun ikkita pimdan 3,3V kuchlanishli barqaror chiqish borligini aniqladim. U VCC va RAW bilan ishlaydi, lekin men VCC -ni tanladim, chunki u allaqachon to'g'ri kuchlanishdir va bu menga uni DAC -dagi VCC simiga lehimlash va simlarni tejash imkonini beradi.

Bilingki, korpusdan chiqib ketadigan ko'plab plastik qismlar bor, lekin agar siz simlarni joyiga yopishtirsangiz, ular haqida bir marta tashvishlanishingizga to'g'ri keladi.

Bularning barchasini so'z bilan ta'riflash qiyin, shuning uchun men rasmlar va qo'pol sxemani qo'shdim.

5 -qadam: Arduino -ni dasturlash

Endi siz Arduino -ni dasturlashingiz kerak. Buning uchun USB kabelini tekshirgichga ko'chirish kerak, shunda siz Arduino -dagi ketma -ket pinlarga kirishingiz mumkin. Men ishlatgan kodni qo'shdim. Bu Adafruit MCP4725 kutubxonasini talab qiladi, uni bu erda topish mumkin:

Odatdagidek, kod boshqaruv moslamasini 90 gradus chapga 90 daraja o'ngga 90 gradusga siljitish orqali analog tayoqchaning butun harakat diapazonini bir tekisda o'tkazishga va uni tekis ushlab o'rtada ushlab turishga imkon beradi.

U X o'qi g-kuchining Z o'qi g-kuchiga bo'linadigan teskari teğetini hisoblash orqali boshqaruvchining burchagini oladi. Bu shuni anglatadiki, agar boshqaruv moslamasi vertikal, tekis yoki ularning orasidagi har qanday burchak bo'lsa. (Qo'shimcha ma'lumot bu erda:

Bu mening tekshirgichimda ishlaydi, lekin boshqa tekshirgichlar har xil kuchlanishni talab qilishi mumkin, bu esa uni hizalamaslikka olib keladi. Menimcha, kuchlanish diapazonini topishning eng yaxshi usuli - bu sinov va xato. Ko'p o'yinlar sizga analog tayoq harakati uchun slayderni ko'rsatadi, lekin men harakatni aniqlashning eng aniq usuli Linuxda jstest. (https://wiki.archlinux.org/index.php/Gamepad#Joystick_API) Bu sizga grafik emas, balki -32, 767 va 32, 767 oralig'idagi raqamlarni beradi, shuning uchun siz tayoq qaerdaligini aniq bilasiz. Tekshirgichni ham, Arduino USB -ni ham ketma -ket adapterga ulang, jstest -ni yuklang va diapazonning yuqori va pastki qismiga etib borguningizcha turli xil DAC qiymatlarini sinab ko'ring va har birini qayd qiling. Men uchun bu 1 593 - 382 edi.

36 -qator alohida qiziqish uyg'otadi:

dacvalue = (nazoratchi burchak + 2.5617859169446084418) / 0.0025942135867793503208 + 0.5;

Bu nima qilayotgani darhol aniq emas. Oddiy qilib aytganda, u boshqaruvchining burchagini oladi (radianlarda o'lchanadi va ~ 1.57 dan ~ -1.57 gacha) va uni DAC uchun 1, 593 va 382 oralig'idagi qiymatga aylantiradi. Agar sizda boshqa DAC diapazoni bo'lsa, siz bu qatorni o'zgartirishingiz kerak bo'ladi.

Chiziqni quyidagicha yozish mumkin:

dacvalue = (nazoratchi burchak +) / + 0,5;

Raqamlar bilan va siz o'zgarishingiz kerak. DAC qiymatlarining umumiy diapazoniga bo'lingan boshqaruvchi burchagi (pi) diapazoniga teng. (diapazonning yuqori qismi minusdan pastda) Bu sizni kuchlanishni o'zgartirishga imkon beradi, lekin natijalar siz xohlagan diapazondan tashqarida bo'ladi. Shuning uchun sizga kerak. diapazonning pastki qismiga ko'paytirgichga teng va nazorat moslamasining harakat oralig'ining yarmiga teng. (pi / 2) Harakatlar oralig'ining yarmini qo'shish uning salbiy son emasligiga ishonch hosil qiladi va diapazonning pastki qismiga ko'paytirilsa, u siz xohlagan diapazon bilan sinxronlashtiriladi.

O'nli kasrlarni butun songa aylantirganda, C ++ yaxlitlanmaydi. Buning o'rniga u kasrni kesib tashlaydi, shuning uchun 9.9 9 bo'ladi. Oxirida 0,5 qo'shilsa, yarmidan yuqori bo'lgan narsa keyingi butun songa o'tadi, shuning uchun u yumaloq bo'ladi.

Dasturni yuklaganingizdan so'ng, uning jstest bilan ishlashiga ishonch hosil qiling.

6 -qadam: Tekshirgichni qayta yig'ing

Tekshirgichni, xuddi analog tayoqchani olib tashlaganingizdek, bir joyga to'plang. Hozir ishlashi kerak. Menimcha, hech qanday kechikish yo'q va bu analog tayoqchani ishlatishdan ko'ra yaxshiroq. U akselerometrdan foydalangani uchun unga to'satdan harakatlar ta'sir qiladi, lekin siz buni sezish uchun chetdan chiqib ketishingiz kerak.

7 -qadam: mumkin bo'lgan yaxshilanishlar

Ba'zi yaxshilanishlar bo'lishi mumkin. Bularga quyidagilar kiradi:

  • Kamroq magnitli simdan foydalanish
  • Hamma narsani bitta korpusga tekkizish moslamasi korpusga mos keladi
  • Chap analog tayoqni mahkamlang va oyoqlarini Arduino -dagi analog kirishga ulang, shunda ular Arduino -ni sozlash uchun ishlatilishi mumkin.
  • Simsiz boshqaruv moslamasining orqa korpusini olish va loyihani batareya bo'linmasiga joylashtirish (buning uchun USB kabeli uchun teshikni kesish kerak bo'ladi)

Tavsiya: