Përmbajtje:

Xbox 360 Controller Accelerometer/gyro Steering Mod: 7 Hapa
Xbox 360 Controller Accelerometer/gyro Steering Mod: 7 Hapa

Video: Xbox 360 Controller Accelerometer/gyro Steering Mod: 7 Hapa

Video: Xbox 360 Controller Accelerometer/gyro Steering Mod: 7 Hapa
Video: Steam Controller Mod - Softer Bumper & Touchpad Clicks 2024, Nëntor
Anonim
Përshpejtues i kontrollorit Xbox 360/drejtues xhiro
Përshpejtues i kontrollorit Xbox 360/drejtues xhiro

Unë kam luajtur Assetto Corsa me kontrolluesin tim Xbox 360. Fatkeqësisht, drejtimi me shkopin analog është shumë i pakëndshëm dhe nuk kam hapësirë për konfigurimin e rrotave. Unë u përpoqa të mendoja për mënyrat se si mund të vendosja një mekanizëm drejtues më të mirë në kontrollues, kur më shkoi në mendje se mund ta përdor të gjithë kontrolluesin si timon.

Shkopi analog ka dy potenciometra. Njëra mat lëvizjen vertikale, dhe një mat lëvizjen horizontale. Ai vendos 1.6V përmes secilës dhe mat tensionin e prodhuar në fshirës për të përcaktuar se sa ka lëvizur shkopi. Kjo do të thotë se është e mundur të kontrolloni lëvizjen e shkopit duke ushqyer një tension të veçantë në kunjin e fshirësit. (më shumë informacion këtu:

Ky mod përdor një Arduino për të llogaritur këndin nga leximet e përshpejtuesit dhe për ta kthyer atë në lëvizje analoge të shkopit përmes një DAC. Prandaj, duhet të funksionojë me çdo lojë që përdor shkopin analog si hyrje.

Hapi 1: Do t'ju duhet:

Mjetet:

  • Makine per ngjitjen e metalit
  • Saldator
  • Thithës/bishtalec ngjitës
  • Zhveshës me tela
  • Një kaçavidë, ndoshta një Torx në varësi të vidhave në kontrolluesin tuaj (të miat janë kryqëzues)
  • Ngjitës (mundësisht jo ngjitës super i fortë kështu që mund të ndahet më vonë)
  • Një përshtatës USB në serial për të programuar Arduino

Materiale:

  • Kontrolluesi Xbox 360 (duh!)
  • Arduino Pro Mini (ose një klon) (mundësisht 3.3V. Nëse përdorni versionin 5V, ndoshta do t'ju duhet një konvertues i rritjes së tensionit)
  • Një xhiroskop/përshpejtues MPU-6050
  • Një DAC MCP4725 (dy nëse doni të kontrolloni të dy akset)
  • Disa tela të hollë
  • Një tabelë buke që të mund të provoni gjithçka para se të lidhni (opsionale, por e rekomanduar)

Hapi 2: Merrni veçmas kontrolluesin

Merrni larg kontrolluesin
Merrni larg kontrolluesin
Merrni larg kontrolluesin
Merrni larg kontrolluesin
Merrni larg kontrolluesin
Merrni larg kontrolluesin

Janë shtatë vida që duhet të hiqni. Gjashtë prej tyre janë të dukshme, por e shtata është pas një afisheje. Supozoj se heqja e tij anulon garancinë tuaj, kështu që vazhdoni me rrezikun tuaj. Shumë udhëzues thonë se keni nevojë për një kaçavidë Torx, por të miat janë kryq, prandaj kontrolloni kontrolluesin tuaj.

Pas kësaj, hiqeni me kujdes kapakun e pasmë. Nëse e hidhni përpara, butonat do të derdhen jashtë dhe ndoshta do të shkojnë në të gjithë dhomën. Ngrini atë nga poshtë. Pastaj shkëputni dy motorët e dridhjeve. (ai me peshë të vogël duhet të jetë në të majtë, dhe ai me peshë të madhe në të djathtë) Nxirrni PCB -në dhe hiqni kapakët e gomës në shkopinjtë analogë. Ata thjesht tërhiqen.

Gjëja tjetër është të hiqni shkopin analog të majtë në mënyrë që të mos ndërhyjë në hyrjen tonë, por mekanizmi i majtë i shkasit është në rrugën e duhur. Në mënyrë që ta hiqni atë, ju duhet të shkrini të tre kunjat nga potenciometri nga pjesa e përparme e tabelës, pastaj hiqni mekanizmin nga PCB.

Tjetra, shkrijini 14 kunjat që mbajnë shkopin analog të majtë. Pastaj hiqeni shkopin.

Hapi 3: Ngjitini Komponentët në Vend

Ngjitini Komponentët në Vend
Ngjitini Komponentët në Vend
Ngjitini Komponentët në Vend
Ngjitini Komponentët në Vend

Ju do të vini re se ka shumë hapësirë midis pjesës së pasme të PCB dhe kasës. Kjo bën të mundur vendosjen e të gjithë pajisjeve në kuti pa hequr asgjë.

E kuptova vetëm më vonë, por kjo do të ishte një kohë e mirë për të shkrirë butonin e rivendosjes në Arduino. Nëse nuk e bëni, do të shtypë në pjesën e pasme të kutisë dhe do të bëjë që projekti të ndalojë së punuari nëse shtrëngoni shumë njërën nga vidhat kur e montoni përsëri.

Unë ngjita një copë të hollë kartoni në pjesën e pasme të secilës PCB për ta izoluar atë, pastaj e ngjita atë në PCB të kontrolluesit. Unë ngurroja të përdor zam, por nuk mund të mendoja për një mënyrë më të mirë për ta bërë atë.

Pozicionet në imazh është kombinimi më i mirë që mund të gjej. Arduino është në të majtë, me skajin me butonin e rivendosjes që përputhet me copën e plastikës nga mekanizmi i këmbëzës së djathtë, me anën tjetër nën tela dhe me qoshen sa më afër lidhësit të bardhë. Ka një fryrje të lehtë në rast, por unë nuk mund të gjej një vend më të mirë për ta vënë atë.

Përshpejtuesi është në të djathtë të telit. Duhet të jetë sa më e sheshtë dhe sa më e drejtë, përndryshe mund t'ju duhet të shkruani një kod më vonë për të kompensuar kompensimin. Vini re se ka disa copa plastike të spikatura në pjesën e prapme të kutisë që duhet të keni kujdes për t'i shmangur. Kam zbuluar se mund të vendosni diçka ngjitëse dhe shumëngjyrëshe, si buzëkuqi, në copat e plastikës të spikatura, pastaj vendosni kapakun e pasmë për të parë se ku lë shenja.

DAC -të shkojnë në këndin e poshtëm të majtë. Ka mjaft hapësirë këtu për të grumbulluar dy DAC, njëra mbi tjetrën, nëse doni të kontrolloni të dy akset. Nuk keni nevojë t'i ngjisni ato. Ata do të qëndrojnë aty ku janë vetëm me lidhjet e lidhura. Nëse jeni duke ngjitur kartën mes tyre sigurohuni që ta keni prerë kartën në mënyrë që të lini SCL, SDA, VCC dhe GND të arritshme, sepse do t'i përdorni ato nga të dyja anët.

Nëse përdorni dy DAC, mos harroni të ndërroni bluzën e adresës dhe të çaktivizoni rezistencat tërheqëse në njërën prej tyre, siç përshkruhet këtu: https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog -converter-hookup-guide

Hapi 4: Lidhni telat aktiv

Saldoni telat aktiv
Saldoni telat aktiv
Saldoni telat aktiv
Saldoni telat aktiv
Saldoni telat aktiv
Saldoni telat aktiv

Tani ju duhet të lidhni gjithçka. VCC, GND, SDA dhe SCL nga të gjitha pajisjet 2/3 duhet të lidhen me VCC, GND, A4 dhe A5 në Arduino, respektivisht. DAC -të janë pjesa më e ndërlikuar. Nëse keni dy, ju duhet t'i lidhni së bashku, ndërsa duke lënë diku mund të lidhni fuqinë dhe linjat me akselerometrin, duke i mbajtur telat OUT të ndarë.

Kunja OUT në DAC duhet të lidhet me kunjin në PCB të kontrolluesit që ishte për kunjën e mesme të potenciometrit horizontal për shkopin analog. Kjo do të thotë, aty ku ishte shkopi analog, ka një rresht prej tre kunjash në krye. Lidheni atë me atë të mesëm. Nëse keni një DAC tjetër, lidheni atë me kunjën e potenciometrit vertikal (rreshti në të majtë) në të njëjtën mënyrë. Ju nuk do të jeni në gjendje të arrini te kunjat nga mbrapa kur zëvendësohet këmbëza, kështu që ju duhet të kaloni një tel në pjesën e përparme të tabelës. Ka një "mur" plastik rrethor rreth zonës së shkopit analog, por për fat të mirë ka një boshllëk të përshtatshëm në të që mund t'i vendosni telat. Sigurohuni që telat të mos pengojnë shtyllën e vidhave në pjesën e përparme të kasës.

Plani im fillestar ishte të furnizoja Arduino me 5V nga kabllo USB e lidhur me pin RAW, por kur e provova, nuk funksionoi. Arduino nuk funksionoi asgjë, dhe Arduino dhe kontrolluesi u fikën pas disa sekondash. Sidoqoftë, zbulova se ka një dalje të qëndrueshme 3.3V nga dy kunja në pjesën e përparme të tabelës pranë prizës së zezë periferike, me sa duket për furnizimin me energji të pajisjeve periferike. Punon si me VCC ashtu edhe me RAW, por unë zgjodha VCC sepse tashmë është tensioni i duhur dhe sepse më lejon ta lidh atë me tela VCC në DAC që është tashmë afër fundit të tabelës dhe të kursej në tela.

Jini të vetëdijshëm se ka shumë pjesë plastike që dalin nga kutia për të cilat duhet të punoni, por nëse ngjitni telat në vend, duhet të shqetësoheni vetëm për to një herë.

E gjithë kjo është e vështirë të përshkruhet me fjalë, kështu që kam përfshirë fotografi dhe një diagram të papërpunuar.

Hapi 5: Programoni Arduino

Tani ju duhet të programoni Arduino. Kjo kërkon lëvizjen e kabllit USB në kontrollues në mënyrë që të keni qasje në kunjat serik në Arduino. Kam përfshirë kodin që kam përdorur. Kërkon bibliotekën Adafruit MCP4725, e cila mund të gjendet këtu:

Siç është, kodi ju lejon të kaloni të gjithë gamën e lëvizjes së shkopit analog në mënyrë të barabartë duke e lëvizur kontrolluesin 90 gradë në të majtë në 90 gradë në të djathtë dhe ta mbani në mes duke e mbajtur atë të sheshtë.

Ai merr këndin e kontrolluesit duke llogaritur tangjentën e kundërt të forcës g të boshtit X të ndarë me forcën g të boshtit Z. Kjo do të thotë se funksionon nëse kontrolluesi është vertikal, i sheshtë ose ndonjë kënd në mes. (më shumë informacion këtu:

Punon në kontrolluesin tim, por kontrolluesit e tjerë mund të kërkojnë tensione të ndryshme, duke e nxjerrë atë jashtë shtrirjes. Unë mendoj se mënyra më e mirë për të gjetur gamën e tensionit është me provë dhe gabim. Shumë lojëra do t'ju tregojnë një rrëshqitës për lëvizjen analoge të shkopit, por mënyra më e saktë që kam gjetur për të përcaktuar lëvizjen është me jstest në Linux. (https://wiki.archlinux.org/index.php/Gamepad#Joystick_API) Ju jep një numër midis -32, 767 dhe 32, 767 sesa një grafik, kështu që ju e dini saktësisht se ku është shkopi. Lidhni kontrolluesin dhe USB Arduino në përshtatësin serik, ngarkoni jstest dhe provoni vlera të ndryshme DAC derisa të arrini në pjesën e sipërme dhe të poshtme të diapazonit dhe shënoni secilën. Për mua ishte 1, 593 - 382.

Me interes të veçantë është rreshti 36:

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

Nuk është menjëherë e qartë se çfarë bën. Thjesht, merr këndin e kontrolluesit (të matur në radian dhe midis 7 1.57 dhe ~ -1.57) dhe e konverton atë në një vlerë midis 1, 593 dhe 382 për DAC. Nëse keni një gamë të ndryshme DAC, do t'ju duhet ta ndryshoni atë linjë.

Linja mund të shkruhet si:

dacvalue = (kontrollues +) / + 0.5;

Me dhe duke qenë numrat që duhet të ndryshoni. është e barabartë me gamën e këndit të kontrolluesit (pi) të ndarë me gamën e përgjithshme të vlerave të DAC. (maja e diapazonit minus fundin e diapazonit) Kjo ju çon deri në ndryshimin e tensionit, megjithëse rezultatet do të jenë jashtë intervalit që dëshironi. Kjo është arsyeja pse ju keni nevojë. është e barabartë me shumëzuar me pjesën e poshtme të diapazonit plus gjysmën e gamës së lëvizjes së kontrolluesit. (pi / 2) Shtimi i gjysmës së gamës së lëvizjes sigurohet që nuk është një numër negativ, dhe shtimi i shumëzuar me pjesën e poshtme të diapazonit sigurohet që është i sinkronizuar me gamën që dëshironi.

Kur shndërroni numrat dhjetorë në një numër të plotë, C ++ nuk rrumbullakoset. Në vend të kësaj, ajo prish dhjetorin, kështu që 9.9 bëhet 9. Shtimi i 0.5 në fund sigurohet që çdo gjë mbi gjysmën të shkojë në numrin e plotë të ardhshëm, kështu që bën rrumbullakim.

Pasi të keni ngarkuar programin tuaj, sigurohuni që ai punon me jstest.

Hapi 6: Montoni përsëri kontrolluesin

Vendoseni përsëri kontrolluesin në të njëjtën mënyrë si e keni ndarë, pa shkopin analog të majtë. Duhet të funksionojë tani. Unë gjej se nuk ka vonesa të dukshme dhe është shumë më mirë sesa përdorimi i shkopit analog. Për shkak se përdor një akselerometër, ndikohet nga lëvizjet e papritura, por ju duhet të dilni nga rruga juaj për ta vënë re atë.

Hapi 7: Përmirësimet e mundshme

Ka disa përmirësime që mund të bëhen. Kjo perfshin:

  • Përdorimi i telave magnetikë më pak të rëndë
  • Gdhendja e gjithçkaje në një PCB të krijuar për t'u përshtatur në kutinë e kontrolluesit
  • Rivendosja e shkopit analog të majtë dhe lidhja e këmbëve me hyrjet analoge në Arduino në mënyrë që ato të mund të përdoren për të rregulluar Arduino
  • Marrja e pjesës së pasme të kutisë për një kontrollues pa tel dhe vendosja e projektit në ndarjen e baterisë (kjo do të kërkonte prerjen e një vrimë për kabllon USB)

Recommended: