Sadržaj:

Akcelerometar/žiroskop kontrolera Xbox 360 Mod upravljanja: 7 koraka
Akcelerometar/žiroskop kontrolera Xbox 360 Mod upravljanja: 7 koraka

Video: Akcelerometar/žiroskop kontrolera Xbox 360 Mod upravljanja: 7 koraka

Video: Akcelerometar/žiroskop kontrolera Xbox 360 Mod upravljanja: 7 koraka
Video: Поход во вторую деревню ► 4 Прохождение The Legend of Zelda: Breath of the Wild (Nintendo Wii U) 2024, Juli
Anonim
Xbox 360 Kontroler Akcelerometar/žiroskop Upravljanje Mod
Xbox 360 Kontroler Akcelerometar/žiroskop Upravljanje Mod

Igrao sam Assetto Corsu sa svojim Xbox 360 kontrolerom. Nažalost, upravljanje analognim štapićem vrlo je nezgrapno i nemam prostora za postavljanje kotača. Pokušao sam smisliti načine na koje bih mogao ubaciti bolji upravljački mehanizam u kontroler, kad mi je palo na pamet da bih cijeli upravljač mogao koristiti kao upravljač.

Analogni štap ima dva potenciometra. Jedan mjeri okomito, a drugi vodoravno kretanje. On propušta 1,6 V kroz svaki i mjeri napon proizveden na brisaču kako bi odredio koliko se štap pomaknuo. To znači da je moguće kontrolirati kretanje štapića dodavanjem određenog napona na iglu brisača. (više informacija ovdje:

Ovaj mod koristi Arduino za izračunavanje kuta iz očitanja akcelerometra i pretvaranje u analogno kretanje štapića putem DAC -a. Stoga bi trebao raditi sa bilo kojom igrom koja koristi analogni štapić kao ulaz.

Korak 1: Trebat će vam:

Alati:

  • Lemilica
  • Solder
  • Sisač/pletenica za lemljenje
  • Skidač žice
  • Odvijač, možda Torx ovisno o vijcima u vašem kontroleru (moji su križni)
  • Ljepilo (po mogućnosti ne jako jako ljepilo pa se kasnije može rastaviti)
  • USB na serijski adapter za programiranje Arduina

Materijali:

  • Xbox 360 kontroler (duh!)
  • Arduino Pro Mini (ili klon) (po mogućnosti 3.3V. Ako koristite verziju od 5V vjerojatno će vam trebati pojačavač napona)
  • Žiroskop/akcelerometar MPU-6050
  • MCP4725 DAC (dva ako želite kontrolirati obje osi)
  • Neka tanka žica
  • Matična ploča tako da možete sve testirati prije lemljenja (opcionalno, ali preporučeno)

Korak 2: Odvojite kontroler

Rastavite kontroler
Rastavite kontroler
Rastavite kontroler
Rastavite kontroler
Rastavite kontroler
Rastavite kontroler

Postoji sedam vijaka koje morate ukloniti. Šest njih je očigledno, ali sedmi se nalazi iza naljepnice. Pretpostavljam da uklanjanjem poništavate jamstvo, pa nastavite na vlastitu odgovornost. Mnogi vodiči kažu da vam treba Torx odvijač, ali moji su križni, pa provjerite svoj kontroler.

Nakon toga, pažljivo odvojite zadnju masku. Ako odvojite prednji dio, dugmad će se izliti i vjerovatno će proći po cijeloj prostoriji. Podignite ga odozdo. Zatim isključite dva motora za vibracije. (onaj s malom težinom trebao bi biti s lijeve strane, a onaj s velikom težinom s desne strane) Izvadite PCB i uklonite gumene kapice na analognim štapovima. Jednostavno se povuku.

Slijedeća stvar je ukloniti lijevi analogni štapić kako ne bi ometao naš ulaz, ali lijevi okidač je na putu. Da biste ga uklonili, morate odspojiti tri pina s potenciometra s prednje strane ploče, a zatim otkačiti mehanizam s tiskane ploče.

Zatim odspojite 14 pinova koji drže lijevi analogni štapić. Zatim izvucite štap.

Korak 3: Zalijepite komponente na mjesto

Zalijepite komponente na mjesto
Zalijepite komponente na mjesto
Zalijepite komponente na mjesto
Zalijepite komponente na mjesto

Primijetit ćete da postoji dosta slobodnog prostora između stražnje strane PCB -a i kućišta. To omogućuje stavljanje cijelog hardvera u kućište bez uklanjanja ičega.

Shvatila sam tek kasnije, ali ovo bi bilo dobro vrijeme za odleđivanje gumba za resetiranje na Arduinu. Ako to ne učinite, pritisnut će stražnju stranu kućišta i uzrokovati prestanak rada projekta ako previše zategnete jedan od vijaka prilikom ponovnog sastavljanja.

Zalijepio sam tanki komad kartice na stražnju stranu svake PCB ploče kako bih je izolirao, a zatim sam je zalijepio na PCB kontrolera. Nisam volio koristiti ljepilo, ali nisam mogao smisliti bolji način za to.

Položaji na slici su najbolja kombinacija koju sam mogao pronaći. Arduino je s lijeve strane, s ivicom s gumbom za resetiranje u ravnini s komadom plastike s desnog mehanizma okidača, s drugom stranom ispod žice i s kutom što bliže bijelom priključku. U kućištu je lagano ispupčenje, ali nisam mogao pronaći bolje mjesto za to.

Akcelerometar se nalazi desno od žice. Trebao bi biti što ravniji i što ravniji, u protivnom ćete možda morati kasnije napisati neki kod da biste kompenzirali pomak. Imajte na umu da se na stražnjoj strani kućišta nalaze neki ispupčeni komadi plastike koje morate izbjegavati. Otkrio sam da možete staviti nešto ljepljivo i šareno, poput ruža, na izbočene komade plastike, a zatim staviti zadnju masku da vidite gdje ostavlja tragove.

DAC (i) se nalaze u donjem lijevom kutu. Ovdje ima dovoljno prostora za slaganje dva DAC -a, jedan na drugi, ako želite kontrolirati obje osi. Ne morate ih lijepiti. Ostat će tamo gdje jesu samo sa lemljenim vezama. Ako zalijepite karticu između njih, svakako izrežite karticu tako da SCL, SDA, VCC i GND ostanu pristupačni, jer ćete im pristupati s obje strane.

Ako koristite dva DAC-a, ne zaboravite prebaciti prespojnik za adresu i onemogućiti otpornike za podizanje na jednom od njih, kako je ovdje opisano: https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog -converter-hookup-guide

Korak 4: Uključite lemljenje žica

Lemljenje žica uključeno
Lemljenje žica uključeno
Lemljenje žica uključeno
Lemljenje žica uključeno
Lemljenje žica uključeno
Lemljenje žica uključeno

Sada morate sve povezati. VCC, GND, SDA i SCL sa svih 2/3 uređaja trebali bi biti povezani na VCC, GND, A4 i A5 na Arduinu. DAC -ovi su najteži dio. Ako imate dvije, morate ih spojiti zajedno, dok negdje odlazite možete spojiti napajanje i vodove na mjerač ubrzanja, držeći odvojeno OUT žice.

OUT pin na DAC -u treba spojiti na pin na PCB -u kontrolera koji je nekad bio za srednji vodoravni pin potenciometra za analogni štapić. Odnosno, tamo gdje je bio analogni štapić, na vrhu je red od tri igle. Spojite ga na srednji. Ako imate drugi DAC, spojite ga na okomiti pin potenciometra (red s lijeve strane) na isti način. Nećete moći doći do pinova sa stražnje strane kada se okidač zamijeni, pa morate provesti žicu do prednje strane ploče. Oko područja analognog štapa postoji kružni plastični "zid", ali na sreću u njemu postoji prikladan otvor kroz koji možete provući žice. Pazite da žice ne ometaju stub vijka na prednjem dijelu kućišta.

Moj prvotni plan je bio napajanje Arduina sa 5 V sa USB kabla spojenog na RAW pin, ali kad sam to pokušao, nije uspio. Arduino nije ništa pokrenuo, a i Arduino i kontroler su se isključili nakon nekoliko sekundi. Međutim, otkrio sam da postoji stabilan izlaz od 3,3 V iz dva pina na prednjoj strani ploče u blizini crne periferne utičnice, vjerovatno za napajanje perifernih uređaja. Radi s VCC -om i RAW -om, ali odabrao sam VCC jer je već pravi napon i jer mi omogućuje lemljenje na VCC žicu na DAC -u koji je već pri dnu ploče i štedim na žicama.

Imajte na umu da iz kućišta viri mnogo plastičnih dijelova koje morate zaobići, ali ako zalijepite žice na svoje mjesto, morate se o njima brinuti samo jednom.

Sve je ovo teško opisati riječima, pa sam uključio slike i grubi dijagram.

Korak 5: Programirajte Arduino

Sada morate programirati Arduino. To zahtijeva pomicanje USB kabela na kontroleru kako biste mogli pristupiti serijskim pinovima na Arduinu. Uključio sam kôd koji sam koristio. Zahtijeva biblioteku Adafruit MCP4725, koju možete pronaći ovdje:

Zapravo, kod vam omogućava da ravnomerno prođete kroz čitav opseg kretanja analognog štapa pomeranjem kontrolera za 90 stepeni ulevo do 90 stepeni udesno i držite ga u sredini držeći ga ravno.

Dobiva kut regulatora izračunavanjem inverzne tangente g-sile X osi podijeljene s g osi Z osi. To znači da radi ako je kontroler okomit, ravan ili ima bilo koji kut između. (više informacija ovdje:

Radi na mojem kontroleru, ali drugi kontroleri mogu zahtijevati različite napone, što ga stavlja van poravnanja. Mislim da je najbolji način da pronađete raspon napona pokušajem i greškom. Mnoge igre će vam pokazati klizač za analogno kretanje štapom, ali najprecizniji način koji sam pronašao da odredim kretanje je pomoću jstesta na Linuxu. (https://wiki.archlinux.org/index.php/Gamepad#Joystick_API) Daje vam broj između -32, 767 i 32, 767, a ne grafički prikaz, tako da znate gdje je štap. Priključite i kontroler i Arduino USB na serijski adapter, učitajte jstest i isprobavajte različite DAC vrijednosti dok ne dođete do vrha i dna raspona i zabilježite svaku od njih. Za mene je to bilo 1, 593 - 382.

Posebno je zanimljiv red 36:

dacvalue = (controllerangle + 2.5617859169446084418) / 0.0025942135867793503208 + 0.5;

Nije odmah očigledno šta radi. Jednostavno, uzima kut kontrolera (mjereno u radijanima i između ~ 1,57 i ~ -1,57) i pretvara ga u vrijednost između 1, 593 i 382 za DAC. Ako imate drugačiji raspon DAC -a, morat ćete promijeniti tu liniju.

Linija se može napisati kao:

dacvalue = (controllerangle +) / + 0,5;

Sa i kao brojevima koje morate promijeniti. jednak je rasponu ugla regulatora (pi) podijeljenom sa ukupnim rasponom DAC vrijednosti. (vrh raspona minus dno raspona) Ovo vas dovodi do promjene napona, iako će rezultati biti izvan raspona koji želite. Zato vam treba. jednako je pomnoženo sa dnom raspona plus pola raspona kretanja kontrolera. (pi / 2) Dodavanjem pola raspona kretanja osigurava se da nije negativan broj, a dodavanjem pomnoženim na dnu raspona osigurava se da je sinhroniziran s rasponom koji želite.

Prilikom pretvaranja decimala u cijeli broj, C ++ se ne zaokružuje. Umjesto toga, odreže decimalni broj, pa 9.9 postaje 9. Dodavanjem 0.5 na kraju osigurava se da sve iznad polovice ide na sljedeći cijeli broj, tako da se zaokružuje.

Nakon što otpremite program, provjerite radi li s jstestom.

Korak 6: Ponovo sastavite kontroler

Ponovo spojite kontroler na isti način na koji ste ga rastavili, umanjeni za lijevi analogni štapić. Trebalo bi sada raditi. Smatram da nema zamjetljivog kašnjenja i da je puno bolje od korištenja analognog štapa. Budući da koristi mjerač ubrzanja, na njega utječu nagli pokreti, ali morate se potruditi da to primijetite.

Korak 7: Moguća poboljšanja

Postoje neka poboljšanja koja bi se mogla napraviti. Ovo uključuje:

  • Korištenje manje glomazne magnetske žice
  • Graviranje svega na jednu tiskanu ploču koja je dizajnirana da stane u kućište kontrolera
  • Ponovno priključivanje lijevog analognog štapa i spajanje nogu na analogne ulaze na Arduinu tako da se mogu koristiti za podešavanje Arduina
  • Nabavite zadnji dio kućišta za bežični kontroler i stavite projekt u pretinac za baterije (ovo bi zahtijevalo izrezivanje rupe za USB kabel)

Preporučuje se: