Satura rādītājs:

Xbox 360 kontroliera akselerometrs/žiroskops Stūres režīms: 7 soļi
Xbox 360 kontroliera akselerometrs/žiroskops Stūres režīms: 7 soļi

Video: Xbox 360 kontroliera akselerometrs/žiroskops Stūres režīms: 7 soļi

Video: Xbox 360 kontroliera akselerometrs/žiroskops Stūres režīms: 7 soļi
Video: use this trick to control gyroscope like chines player!!(100%working) 2024, Novembris
Anonim
Xbox 360 kontroliera akselerometrs/žiroskopa stūrēšanas mod
Xbox 360 kontroliera akselerometrs/žiroskopa stūrēšanas mod

Es spēlēju Assetto Corsa ar savu Xbox 360 kontrolieri. Diemžēl stūrēšana ar analogo nūju ir ļoti apgrūtinoša, un man nav vietas riteņu uzstādīšanai. Es mēģināju iedomāties veidus, kā kontrolētājā varētu ielikt labāku stūres mehānismu, kad man ienāca prātā, ka varu visu kontrolieri izmantot kā stūri.

Analogajai nūjai ir divi potenciometri. Viens mēra vertikālu kustību, bet otrs - horizontālu kustību. Tas izlaiž caur katru spriegumu 1,6 V un mēra tīrītāja radīto spriegumu, lai noteiktu, cik daudz nūja ir pārvietojusies. Tas nozīmē, ka ir iespējams kontrolēt nūju kustību, pievadot tīrītāja tapai noteiktu spriegumu. (vairāk informācijas šeit:

Šis mod izmanto Arduino, lai aprēķinātu leņķi no akselerometra rādījumiem un pārvērstu to par analogo nūjas kustību, izmantojot DAC. Tāpēc tai vajadzētu strādāt ar jebkuru spēli, kurā kā ievadi tiek izmantota analogā nūja.

1. darbība. Jums būs nepieciešams:

Rīki:

  • Lodāmurs
  • Lodēt
  • Lodēšanas zīdējs/pinums
  • Stiepļu noņēmējs
  • Skrūvgriezis, iespējams, Torx, atkarībā no jūsu kontrollera skrūvēm (manējās ir šķērsgriezums)
  • Līme (vēlams ne īpaši stipra līme, lai to varētu vēlāk izjaukt)
  • USB -seriālais adapteris Arduino programmēšanai

Materiāli:

  • Xbox 360 kontrolieris (duh!)
  • Arduino Pro Mini (vai klons) (vēlams 3.3V. Ja izmantojat 5V versiju, iespējams, būs nepieciešams pastiprināts sprieguma pārveidotājs)
  • Žiroskops/akselerometrs MPU-6050
  • MCP4725 DAC (divi, ja vēlaties vadīt abas asis)
  • Kāds plāns vads
  • Maizes dēlis, lai jūs varētu pārbaudīt visu pirms lodēšanas (pēc izvēles, bet ieteicams)

2. darbība: noņemiet kontrolieri

Izjauciet kontrolieri
Izjauciet kontrolieri
Izjauciet kontrolieri
Izjauciet kontrolieri
Izjauciet kontrolieri
Izjauciet kontrolieri

Ir jāizņem septiņas skrūves. Seši no tiem ir acīmredzami, bet septītais ir aiz uzlīmes. Es pieņemu, ka tā noņemšana anulē jūsu garantiju, tāpēc turpiniet uz savu risku. Daudzi ceļveži saka, ka jums ir nepieciešams Torx skrūvgriezis, bet manējais ir šķērsgriezums, tāpēc pārbaudiet savu kontrolieri.

Pēc tam uzmanīgi noņemiet aizmugurējo vāku. Ja jūs noņemat priekšpusi, pogas izplūst un, iespējams, iet pa visu istabu. Paceliet to no apakšas. Pēc tam atvienojiet divus vibrācijas motorus. (tai, kurai ir mazs svars, jāatrodas kreisajā pusē, un tai, kurai ir liels svars labajā pusē). Viņi vienkārši atraujas.

Nākamā lieta ir noņemt kreiso analogo nūju, lai tā netraucētu mūsu ievadi, bet kreisā sprūda mehānisms ir ceļā. Lai to noņemtu, jums ir jāatkausē trīs tapas no potenciometra no plāksnes priekšpuses, pēc tam jāatvieno mehānisms no PCB.

Pēc tam atlaidiniet 14 tapas, kas tur kreiso analogo nūju. Pēc tam noņemiet nūju.

3. darbība: pielīmējiet komponentus vietā

Ielīmējiet komponentus vietā
Ielīmējiet komponentus vietā
Ielīmējiet komponentus vietā
Ielīmējiet komponentus vietā

Jūs pamanīsit, ka starp PCB aizmuguri un korpusu ir diezgan daudz brīvas vietas. Tas ļauj ievietot visu aparatūru korpusā, neko nenoņemot.

Es sapratu tikai vēlāk, bet tas būtu piemērots laiks, lai atkausētu Arduino atiestatīšanas pogu. Ja jūs to nedarīsit, tas nospiedīs korpusa aizmuguri un novedīs pie tā, ka projekts pārstās darboties, ja, saliekot to, pārāk stipri pievelciet vienu no skrūvēm.

Katras PCB aizmugurē pielīmēju plānu kartiņas gabalu, lai to izolētu, pēc tam pielīmēju pie kontroliera PCB. Es nelabprāt izmantoju līmi, bet nevarēju izdomāt labāku veidu, kā to izdarīt.

Attēla pozīcijas ir labākā kombinācija, kādu varēju atrast. Arduino atrodas kreisajā pusē, un mala ar atiestatīšanas pogu atrodas pret plastmasas gabalu no labā sprūda mehānisma, bet otra puse atrodas zem stieples un stūris ir pēc iespējas tuvāk baltajam savienotājam. Korpusā ir neliels izliekums, bet es nevarēju atrast labāku vietu, kur to ievietot.

Akselerometrs atrodas pa labi no stieples. Tam vajadzētu būt pēc iespējas plakanam un taisnākam, pretējā gadījumā, iespējams, vēlāk būs jāraksta kods, lai kompensētu nobīdi. Ņemiet vērā, ka korpusa aizmugurē ir daži izvirzīti plastmasas gabali, no kuriem jums jābūt uzmanīgiem. Es atklāju, ka uz izvirzītajiem plastmasas gabaliņiem varat uzlikt kaut ko lipīgu un krāsainu, piemēram, lūpu krāsu, pēc tam uzlikt aizmugurējo vāciņu, lai redzētu, kur tas atstāj pēdas.

DAC (-i) atrodas apakšējā kreisajā stūrī. Šeit ir pietiekami daudz vietas, lai sakrautu divus DAC, vienu virs otra, ja vēlaties kontrolēt abas asis. Jums nav nepieciešams tos pielīmēt. Viņi paliks tur, kur atrodas, tikai ar lodētiem savienojumiem. Ja jūs ievietojat karti starp tām, noteikti nogrieziet to tā, lai SCL, SDA, VCC un GND būtu pieejami, jo tiem varēsit piekļūt no abām pusēm.

Ja izmantojat divus DAC, neaizmirstiet pārslēgt adreses džemperi un atspējot vienā no tiem uzvilkšanas rezistorus, kā aprakstīts šeit: https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog -pārveidotājs-hookup-guide

4. solis: pielodējiet vadus

Lodējiet vadus
Lodējiet vadus
Lodējiet vadus
Lodējiet vadus
Lodējiet vadus
Lodējiet vadus

Tagad jums viss ir jāsavieno. VCC, GND, SDA un SCL no visām 2/3 ierīcēm jāpievieno attiecīgi VCC, GND, A4 un A5 Arduino. DAC ir sarežģītākā daļa. Ja jums ir divi, tie ir jāsavieno kopā, kaut kur atstājot, jūs varat pieslēgt barošanu un līnijas akselerometram, vienlaikus saglabājot OUT vadus atsevišķi.

DAC OUT tapai jābūt savienotai ar kontroliera PCB tapu, kas agrāk bija analogās spieķa vidējās horizontālās potenciometra tapai. Tas ir, tur, kur bija analogā nūja, augšpusē ir trīs tapas. Savienojiet to ar vidējo. Ja jums ir cits DAC, savienojiet to ar vertikālo potenciometra tapu (rindu pa kreisi) tādā pašā veidā. Nomainot sprūdu, jūs nevarēsit nokļūt līdz tapām no aizmugures, tāpēc jums ir jāpalaiž vads uz tāfeles priekšpusi. Ap analogo nūju zonu ir apļveida plastmasas "siena", bet par laimi tajā ir ērta sprauga, caur kuru var izvietot vadus. Pārliecinieties, ka vadi netraucē skrūves stabam korpusa priekšējā daļā.

Mans sākotnējais plāns bija barot Arduino ar 5V no USB kabeļa, kas pievienots RAW tapai, bet, kad es to izmēģināju, tas nedarbojās. Arduino neko nedarbināja, un gan Arduino, gan kontrolieris pēc dažām sekundēm izslēdzās. Tomēr es atklāju, ka pastāvīga 3,3 V izeja no divām tapām paneļa priekšpusē pie melnās perifērijas kontaktligzdas, iespējams, perifērijas ierīču barošanai. Tas darbojas gan ar VCC, gan ar RAW, bet es izvēlējos VCC, jo tas jau ir pareizais spriegums un tāpēc, ka tas ļauj man to pielodēt pie VCC stieples uz DAC, kas jau ir tuvu tāfeles apakšai, un ietaupīt uz vadiem.

Jāapzinās, ka no korpusa izvirzās daudz plastmasas detaļu, kuras jums ir jāapstrādā, bet, ja jūs pielīmējat vadus vietā, jums par tiem jāuztraucas tikai vienu reizi.

To visu ir grūti aprakstīt ar vārdiem, tāpēc esmu iekļāvis attēlus un neapstrādātu diagrammu.

5. solis: ieprogrammējiet Arduino

Tagad jums ir jāprogrammē Arduino. Tas prasa pārvietot kontrollera USB kabeli, lai jūs varētu piekļūt Arduino sērijas tapām. Es iekļāvu izmantoto kodu. Tam nepieciešama Adafruit MCP4725 bibliotēka, kuru var atrast šeit:

Kods ļauj vienmērīgi iziet visu analogās nūjas kustības diapazonu, pārvietojot kontrolleri par 90 grādiem pa kreisi līdz 90 grādiem pa labi, un turot to vidū, turot to līdzenu.

Tas iegūst kontrollera leņķi, aprēķinot X ass g spēka apgriezto tangenci, dalītu ar Z ass g spēku. Tas nozīmē, ka tas darbojas, ja kontrolieris ir vertikāls, plakans vai jebkurš leņķis starp tiem. (vairāk informācijas šeit:

Tas darbojas ar manu kontrolieri, bet citiem kontrolieriem var būt nepieciešams atšķirīgs spriegums, tādējādi to izlīdzinot. Es domāju, ka labākais veids, kā atrast sprieguma diapazonu, ir izmēģinājumi un kļūdas. Daudzās spēlēs tiks parādīts analogās nūjas kustības slīdnis, taču visprecīzākais veids, kā esmu atradis kustību, ir jstest operētājsistēmā Linux. (https://wiki.archlinux.org/index.php/Gamepad#Joystick_API) Tas dod jums skaitli no -32, 767 līdz 32, 767, nevis grafiku, tāpēc jūs precīzi zināt, kur atrodas nūja. Pievienojiet gan kontrolieri, gan Arduino USB seriālajam adapterim, ielādējiet jstest un izmēģiniet dažādas DAC vērtības, līdz sasniedzat diapazona augšējo un apakšējo daļu, un pierakstiet katru no tām. Man tas bija 1, 593 - 382.

Īpaša interese ir 36. rindā:

dacvalue = (vadības stūris + 2,5617859169446084418) / 0,0025942135867793503208 + 0,5;

Nav uzreiz skaidrs, ko tas dara. Vienkārši, tas nosaka kontrollera leņķi (mērot radiānos un no ~ 1,57 līdz ~ -1,57) un pārvērš to DAC vērtībā no 1, 593 līdz 382. Ja jums ir cits DAC diapazons, šī līnija būs jāmaina.

Rindu var rakstīt šādi:

dacvalue = (vadības leņķis +) / + 0,5;

Ar skaitļiem, kas jums ir jāmaina. ir vienāds ar kontrollera leņķa diapazonu (pi), dalīts ar kopējo DAC vērtību diapazonu. (diapazona augšdaļa mīnus diapazona apakšdaļa) Tādējādi jūs varat mainīt spriegumu, lai gan rezultāti būs ārpus vēlamā diapazona. Tāpēc vajag. ir vienāds ar reizinājumu ar diapazona apakšdaļu plus puse no kontroliera kustības diapazona. (pi / 2) Pievienojot pusi kustības diapazona, pārliecinieties, vai tas nav negatīvs skaitlis, un, pievienojot reizinājumu ar diapazona apakšdaļu, tas tiek sinhronizēts ar vēlamo diapazonu.

Pārvēršot aiz komata veselu skaitli, C ++ neapaļo. Tā vietā tiek nogriezta decimāldaļa, tāpēc 9.9 kļūst par 9. Pievienojot beigās 0,5, pārliecinieties, ka viss, kas pārsniedz pusi, nonāk nākamajā skaitlī, tāpēc tas tiek noapaļots.

Kad esat augšupielādējis savu programmu, pārliecinieties, vai tā darbojas ar jstest.

6. darbība: salieciet kontrolieri atpakaļ

Salieciet kontrolieri atpakaļ tādā pašā veidā, kā to atdalījāt, atskaitot kreiso analogo nūju. Tam vajadzētu strādāt tagad. Es uzskatu, ka nav ievērojamas kavēšanās, un tas ir daudz labāk nekā izmantot analogo nūju. Tā kā tas izmanto akselerometru, to ietekmē pēkšņas kustības, bet jums ir jāiet no ceļa, lai to pamanītu.

7. darbība. Iespējamie uzlabojumi

Ir daži uzlabojumi, ko varētu veikt. Tie ietver:

  • Izmantojot mazāk apgrūtinošu magnēta vadu
  • Visu iegravēšana vienā PCB, kas paredzēta kontroliera korpusam
  • Atkārtoti pievienojiet kreiso analogo nūju un savienojiet kājas ar Arduino analogo ieeju, lai tās varētu izmantot, lai pielāgotu Arduino
  • Bezvadu vadības pults aizmugures korpusa iegūšana un projekta ievietošana akumulatora nodalījumā (tam būtu jāizgriež caurums USB kabelim)

Ieteicams: