Sadržaj:

Akcelerometar kontrolera Xbox 360/žiroskop Upravljanje: 7 koraka
Akcelerometar kontrolera Xbox 360/žiroskop Upravljanje: 7 koraka

Video: Akcelerometar kontrolera Xbox 360/žiroskop Upravljanje: 7 koraka

Video: Akcelerometar kontrolera Xbox 360/žiroskop Upravljanje: 7 koraka
Video: Человек-паук Marvel: Майлз Моралес (фильм) 2024, Studeni
Anonim
Akcelerometar kontrolera Xbox 360/žiro upravljački mod
Akcelerometar kontrolera Xbox 360/žiro upravljački 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 upravljač, kad mi je palo na pamet da bih cijeli upravljač mogao koristiti kao upravljač.

Analogni štapić ima dva potenciometra. Jedan mjeri okomito, a drugi vodoravno kretanje. On stavlja 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
  • Lem
  • Sisač/pletenica za lemljenje
  • Skidač žice
  • Odvijač, možda Torx ovisno o vijcima u vašem kontroleru (moji su križna glava)
  • 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 (da!)
  • Arduino Pro Mini (ili klon) (po mogućnosti 3.3V. Ako koristite verziju od 5V vjerojatno ćete trebati pojačavač napona)
  • Žiroskop/akcelerometar MPU-6050
  • MCP4725 DAC (dva ako želite kontrolirati obje osi)
  • Neku tanku žicu
  • Matična ploča tako da možete sve testirati prije lemljenja (izborno, ali preporučeno)

Korak 2: Odvojite kontroler

Odvojite kontroler
Odvojite kontroler
Rastavite kontroler
Rastavite kontroler
Rastavite kontroler
Rastavite kontroler

Postoji sedam vijaka koje morate ukloniti. Šest ih je očito, ali sedmi je iza naljepnice. Pretpostavljam da uklanjanje poništava vaše 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 stražnji poklopac. Ako odvojite prednji dio, gumbi će se izliti i vjerojatno ć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 kape na analognim štapićima. Jednostavno se povuku.

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

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 cjelokupnog hardvera u kućište bez ičega.

Shvatila sam tek kasnije, ali ovo bi bilo dobro vrijeme za odmrzavanje gumba za reset 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 svakog PCB -a kako bih ga izolirao, a zatim sam to 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 rubom s gumbom za poništavanje 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 kôd kako biste kompenzirali pomak. Imajte na umu da se na stražnjoj strani kućišta nalaze neki izboč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 stražnju 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 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 pristupiti s obje strane.

Ako ipak koristite dva DAC-a, ne zaboravite prebaciti preskakač adrese 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 spojeni na VCC, GND, A4 i A5 na Arduinu. DAC -ovi su najteži dio. Ako ih imate dva, morate ih spojiti zajedno, dok negdje odlazite možete spojiti napajanje i vodove na mjerač ubrzanja, dok OUT žice držite odvojeno.

OUT pin na DAC -u trebao bi biti spojen na pin na PCB -u kontrolera koji je nekad bio za srednji vodoravni pin potenciometra za analogni štapić. To jest, tamo gdje je bio analogni štapić, na vrhu je niz 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 zamijeni okidač, 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 smetaju vijčanom stupu na prednjem dijelu kućišta.

Moj je prvotni plan bio napajati Arduino sa 5V s USB kabela spojenog na RAW pin, ali kad sam to pokušao, nije uspio. Arduino nije ništa pokrenuo, a 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, vjerojatno 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 uštedu na žicama.

Budite svjesni 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 to teško riječima opisati, pa sam prilož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. Potrebna je biblioteka Adafruit MCP4725, koju možete pronaći ovdje:

U svakom slučaju, kôd vam omogućuje da prolazite kroz cijeli raspon kretanja analognog štapa ravnomjerno pomicanjem kontrolera 90 stupnjeva ulijevo do 90 stupnjeva 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 regulator 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 izvan poravnanja. Mislim da je najbolji način za pronalaženje raspona napona pokušajem i pogreškom. Mnoge igre pokazat će vam klizač za kretanje analognog štapa, ali najtočniji način koji sam pronašao za određivanje kretanja 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 grafiku, tako da točno 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 redak 36:

dacvalue = (controllerangle + 2,5617859169446084418) / 0,0025942135867793503208 + 0,5;

Nije odmah očito što radi. Jednostavno, uzima kut regulatora (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.

Redak se može napisati kao:

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

S brojevima koje morate promijeniti i biti. jednak je rasponu kuta regulatora (pi) podijeljenom s 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 s dnom raspona plus polovica raspona kretanja regulatora. (pi / 2) Dodavanjem polovice raspona kretanja osigurava se da nije negativan broj, a zbrajanjem pomnoženim na dnu raspona osigurava se sinkronizacija 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 prenesete svoj program, provjerite radi li s jstestom.

Korak 6: Ponovno sastavite kontroler

Ponovno spojite upravljački sklop na isti način na koji ste ga rastavili, minus lijevi analogni štapić. Sad bi trebalo 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 primijetiti ga.

Korak 7: Moguća poboljšanja

Postoje neka poboljšanja koja bi se mogla napraviti. To 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
  • Dobivanje stražnjeg dijela kućišta za bežični kontroler i stavljanje projekta u pretinac za baterije (to bi zahtijevalo izrezivanje rupe za USB kabel)

Preporučeni: