Мазмұны:

Xbox 360 контроллері акселерометр/гиро рульдік режим: 7 қадам
Xbox 360 контроллері акселерометр/гиро рульдік режим: 7 қадам

Бейне: Xbox 360 контроллері акселерометр/гиро рульдік режим: 7 қадам

Бейне: Xbox 360 контроллері акселерометр/гиро рульдік режим: 7 қадам
Бейне: КАКОЙ ГЕЙМПАД ЛУЧШЕ? PS4 VS XBOX ONE VS PS3 VS XBOX 360 + Выбор для ПК 2024, Қараша
Anonim
Xbox 360 контроллері акселерометр/гиро рульдік модуль
Xbox 360 контроллері акселерометр/гиро рульдік модуль

Мен Xbox 360 контроллерімен Assetto Corsa ойнадым. Өкінішке орай, аналогтық таяқшамен басқару өте ыңғайсыз, менде доңғалақты орнатуға орын жоқ. Мен бүкіл контроллерді рульдік дөңгелек ретінде қолдануға болатынын ойлағанда, мен басқарушыға жақсы руль механизмін қалай қою керектігін ойлауға тырыстым.

Аналогтық таяқшада екі потенциометр бар. Бірі тік қозғалысты, екіншісі көлденең қозғалысты өлшейді. Ол әрқайсысына 1,6 В өткізеді және таяқшаның қаншалықты жылжып кеткенін анықтау үшін тазалағыштағы кернеуді өлшейді. Бұл тазалағыш түйінге белгілі бір кернеуді беру арқылы таяқтың қозғалысын басқаруға болатынын білдіреді. (қосымша ақпарат мына жерде:

Бұл режим акселерометр көрсеткіштерінен бұрышты есептеу және оны DAC арқылы аналогтық таяқшаның қозғалысына түрлендіру үшін Arduino қолданады. Сондықтан ол аналогты таяқшаны енгізу ретінде қолданатын кез келген ойынмен жұмыс істеуі керек.

1 -қадам: Сізге қажет:

Құралдар:

  • Пісіру темірі
  • Дәнекер
  • Дәнекерлеуші/өруші
  • Сымды тазартқыш
  • Бұрауыш, мүмкін контроллердегі бұрандаларға байланысты Torx болуы мүмкін (менікі - крестовой)
  • Желім (жақсырақ күшті желім емес, сондықтан оны кейін ажыратуға болады)
  • Arduino бағдарламалау үшін USB сериялық адаптері

Материалдар:

  • Xbox 360 контроллері (жоқ!)
  • Arduino Pro Mini (немесе клон) (жақсырақ 3.3В. Егер сіз 5В нұсқасын қолдансаңыз, сізге кернеуді жоғарылататын түрлендіргіш қажет болуы мүмкін)
  • MPU-6050 гироскопы/акселерометр
  • MCP4725 DAC (екі осьті басқарғыңыз келсе, екеуі)
  • Кейбір жұқа сым
  • Дәнекерлеу алдында бәрін тексеруге болатын тақта (міндетті емес, бірақ ұсынылады)

2 -қадам: Контроллерді ажыратыңыз

Контроллерді ажыратыңыз
Контроллерді ажыратыңыз
Контроллерді ажыратыңыз
Контроллерді ажыратыңыз
Контроллерді ажыратыңыз
Контроллерді ажыратыңыз

Сіз жеті бұранданы алып тастауыңыз керек. Олардың алтауы анық, бірақ жетінші стикердің артында. Менің ойымша, оны алып тастау сіздің кепілдігіңізді бұзады, сондықтан өз тәуекеліңізге барыңыз. Көптеген нұсқаулықтар сізге Torx бұрағыш қажет дейді, бірақ менікі - бұл контроллерді тексеріңіз.

Осыдан кейін, артқы қақпақты абайлап алыңыз. Егер сіз алдыңғы жағын алып тастасаңыз, түймелер төгіліп кетеді және, мүмкін, бүкіл бөлмені шарлап кетеді. Оны төменнен көтеріңіз. Содан кейін екі діріл қозғалтқышты ажыратыңыз. (аз салмағы сол жақта, ал үлкен салмағы оң жақта болуы керек) ПХД шығарып алып, аналогтық таяқшалардағы резеңке қақпақтарды алыңыз. Олар жай ғана тартып алады.

Келесі нәрсе - сол жақ аналогтық таяқшаны алып тастау, ол біздің кірісімізге кедергі жасамайды, бірақ сол жақ триггер механизмі жолда. Оны алып тастау үшін тақтаның алдыңғы жағынан потенциометрден үш түйреуішті босатып алу керек, содан кейін механизмді ПХД -дан ажыратыңыз.

Содан кейін, сол жақ аналогтық таяқшаны ұстайтын 14 түйреуішті ағытыңыз. Содан кейін таяқшаны тартып алыңыз.

3 -қадам: Компоненттерді орнына қойыңыз

Компоненттерді орнына қойыңыз
Компоненттерді орнына қойыңыз
Компоненттерді орнына қойыңыз
Компоненттерді орнына қойыңыз

Сіз ПХД артқы жағы мен корпус арасында үлкен бос орын бар екенін байқайсыз. Бұл ештеңені жоймай -ақ барлық жабдықты корпусқа салуға мүмкіндік береді.

Мен мұны кейін ғана түсіндім, бірақ бұл Arduino -дегі қалпына келтіру түймесін өшірудің жақсы уақыты болар еді. Егер олай етпесеңіз, ол корпустың артқы жағын басады және егер оны қайта жинау кезінде бұрандалардың біреуін тым қатты қыссаңыз, жоба жұмысын тоқтатады.

Мен оны оқшаулау үшін әр ПХД артына жұқа картаны жапсырдым, содан кейін оны контроллердің ПХД -не жапсырдым. Мен желімді қолданудан бас тарттым, бірақ оны қолданудың жақсы әдісін ойлап таба алмадым.

Суреттегі позициялар - мен таба алатын ең жақсы комбинация. Arduino сол жақта, қалпына келтіру батырмасы бар шеті пластмассадан оң жақ триггер механизмінен, екінші жағы сым астында және бұрышы ақ қосқышқа мүмкіндігінше жақын орналасқан. Кішкене ісік бар, бірақ мен оны қоюға жақсы орын таба алмадым.

Акселерометр сымның оң жағында орналасқан. Ол мүмкіндігінше тегіс және түзу болуы керек, әйтпесе офсеттің орнын толтыру үшін сізге кейінірек код жазуға тура келуі мүмкін. Корпустың артқы жағында шығыңқы пластмассалар бар екенін ескеріңіз, оларды болдырмау үшін абай болу керек. Мен пластмассаның шығыңқы бөліктеріне ерін далабы сияқты жабысқақ және түрлі -түсті нәрсе қоюға болатынын білдім, содан кейін оның қайда із қалдыратынын көру үшін артқы қақпақты жабыңыз.

DAC (лар) төменгі сол жақ бұрышта орналасқан. Егер сіз екі осьті басқарғыңыз келсе, бір -бірінің үстіне екі DAC жинау үшін жеткілікті бос орын бар. Оларды желімдеудің қажеті жоқ. Олар тек дәнекерленген қосылыстармен өз орындарында қалады. Егер сіз олардың арасында картаны ұстасаңыз, SCL, SDA, VCC және GND қол жетімді болуы үшін картаны кесіп алғаныңызға көз жеткізіңіз, себебі сіз оларға екі жақтан қол жеткізе аласыз.

Егер сіз екі DAC қолдансаңыз, онда адрестік қосқышты ауыстырып қосуды және олардың біреуіндегі тартылатын резисторларды осында сипатталғандай өшіруді ұмытпаңыз: https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog -түрлендіргіш-қосқыш-бағыттаушы

4 -қадам: сымдарды дәнекерлеу

Сымдарды қосу
Сымдарды қосу
Сымдарды қосу
Сымдарды қосу
Сымдарды қосу
Сымдарды қосу

Енді бәрін қосу керек. Барлық 2/3 құрылғыларынан VCC, GND, SDA және SCL тиісінше Arduino -да VCC, GND, A4 және A5 -ке қосылуы керек. DACs - ең қиын бөлігі. Егер сізде екеуі болса, оларды бір -бірімен байланыстыру керек, бір жерден кетерде электр сымдарын акселерометрге қосуға болады, ал шығатын сымдарды бөлек ұстауға болады.

DAC -тегі OUT түйрегіші контроллердің ПХД -сіндегі аналогтық таяқшаның орташа көлденең потенциометрлік түйреуішіне арналған түйреуішке қосылуы керек. Яғни, аналогтық таяқша қай жерде болса, жоғарғы жағында үш түйреуіш бар. Оны ортасына қосыңыз. Егер сізде басқа DAC болса, оны тік потенциометрдің түйреуішіне (сол жақтағы жолға) дәл осылай қосыңыз. Триггерді ауыстырған кезде, түйреуіштерге артқы жағынан кіре алмайсыз, сондықтан тақтаның алдыңғы жағына сым тарту керек. Аналогты таяқшаның айналасында дөңгелек пластикалық «қабырға» бар, бірақ, бақытымызға орай, сымдарды өткізуге болатын ыңғайлы саңылау бар. Сымдар корпустың алдыңғы бөлігіндегі бұрандалы тірекке кедергі келтірмейтініне көз жеткізіңіз.

Менің бастапқы жоспарым Arduino -ны RAW түйреуішіне жалғанған USB кабелінен 5В қуат көзіне қосу болды, бірақ мен оны сынап көргенімде ол жұмыс істемеді. Arduino ештеңе істемеді, және Arduino да, контроллер де бірнеше секундтан кейін сөніп қалды. Дегенмен, мен перифериялық құрылғыларды қуаттандыру үшін, қара перифериялық розетканың жанында тақтаның алдыңғы жағындағы екі түйреуіштен тұрақты 3.3В шығысы бар екенін білдім. Ол VCC -пен де, RAW -пен де жұмыс істейді, бірақ мен VCC -ді таңдадым, себебі ол кернеудің кернеуі, және бұл оны тақтаның төменгі жағындағы VACC сымына дәнекерлеуге және сымдарды үнемдеуге мүмкіндік береді.

Есіңізде болсын, корпустан шығатын көптеген пластикалық бөлшектер бар, бірақ егер сіз сымдарды орнына жапсырсаңыз, олар туралы бір рет алаңдауыңыз керек.

Мұның бәрін сөзбен сипаттау қиын, сондықтан мен суреттер мен өрнекті диаграмманы қостым.

5 -қадам: Arduino бағдарламасын жасаңыз

Енді сізге Arduino бағдарламалау керек. Бұл USB кабелін контроллерге жылжытуды қажет етеді, осылайша сіз Arduino сериялық түйреуіштеріне қол жеткізе аласыз. Мен қолданған кодты енгіздім. Ол үшін мына жерден табуға болатын Adafruit MCP4725 кітапханасы қажет:

Әдетте, код контроллерді солға 90 градусқа 90 градусқа оңға қарай жылжыту арқылы аналогтық таяқшаның барлық қозғалыс диапазонынан біркелкі өтуге мүмкіндік береді және оны тегіс ұстау арқылы ортасында ұстауға мүмкіндік береді.

Ол X осінің g-күшінің Z осінің g-күшіне бөлінген кері жанамасын есептеу арқылы контроллердің бұрышын алады. Бұл контроллер тік, жазық немесе олардың арасындағы кез келген бұрыш болса жұмыс істейтінін білдіреді. (қосымша ақпарат мына жерде:

Бұл менің контроллерімде жұмыс істейді, бірақ басқа контроллерлер оны кернеуді қажет етуі мүмкін. Менің ойымша, кернеу диапазонын табудың ең жақсы әдісі - сынақ және қате. Көптеген ойындар сізге аналогтық таяқша қозғалысына арналған жүгірткіні көрсетеді, бірақ мен қозғалысты анықтаудың ең дәл әдісі - Linux -тегі jstest. (https://wiki.archlinux.org/index.php/Gamepad#Joystick_API) Ол сізге графикадан гөрі -32, 767 мен 32, 767 арасындағы санды береді, сондықтан сіз таяқтың қай жерде екенін білесіз. Контроллерді де, Arduino USB -ді де сериялық адаптерге қосыңыз, jstest жүктеңіз және диапазонның жоғарғы және төменгі жағына жеткенше әр түрлі DAC мәндерін қолданып көріңіз және әрқайсысына ескертпе жасаңыз. Мен үшін бұл 1 593 - 382 болды.

36 -жол ерекше қызығушылық тудырады:

dacvalue = (контроллер бұрышы + 2.5617859169446084418) / 0.0025942135867793503208 + 0.5;

Оның не істейтіні бірден түсініксіз. Ол контроллердің бұрышын алады (радиандармен өлшенеді және ~ 1.57 мен ~ -1.57 аралығында) және оны DAC үшін 1, 593 және 382 арасындағы мәнге түрлендіреді. Егер сізде басқа DAC диапазоны болса, сізге бұл сызықты өзгерту қажет болады.

Жолды былай жазуға болады:

dacvalue = (контроллер +) / + 0,5;

Нөмірлердің көмегімен сіз өзгеруіңіз керек. DAC мәндерінің жалпы диапазонына бөлінген контроллер бұрышының диапазонына (pi) тең. (диапазонның жоғарғы жағы минус диапазоны) Бұл сізге кернеуді өзгертуге мүмкіндік береді, бірақ нәтиже сіз қалаған ауқымнан тыс болады. Сондықтан сізге керек. диапазонның төменгі бөлігіне көбейткішке тең және контроллердің қозғалыс диапазонының жартысына тең. (pi / 2) Қозғалыс диапазонының жартысын қосу оның теріс сан емес екеніне көз жеткізеді, ал диапазонның төменгі бөлігіне көбейту оны қалаған ауқыммен синхрондалғанына көз жеткізеді.

Ондық бөлшектерді бүтін санға түрлендіру кезінде C ++ дөңгелектенбейді. Ол ондық бөлшекті кесіп тастайды, сондықтан 9.9 9 -ға айналады. Соңында 0,5 -ті қосқанда, жартысынан жоғары кез келген нәрсе келесі бүтін санға өтетініне көз жеткізеді, сондықтан ол дөңгелектенеді.

Бағдарламаны жүктегеннен кейін оның jstest -пен жұмыс істейтініне көз жеткізіңіз.

6 -қадам: Контроллерді қайта жинаңыз

Контроллерді сол жақтағы аналогтық таяқшаны алып тастағандағыдай, қайтадан орнына қойыңыз. Ол қазір жұмыс істеуі керек. Менің байқауымша, ешқандай кідіріс жоқ және бұл аналогты таяқшаны қолданудан әлдеқайда жақсы. Ол акселерометрді қолданатындықтан, оған кенеттен қозғалыстар әсер етеді, бірақ сіз оны байқау үшін өзіңізден шығуыңыз керек.

7 -қадам: Мүмкін болатын жақсартулар

Кейбір жақсартулар болуы мүмкін. Оларға мыналар жатады:

  • Магнитті аз сымды қолдану
  • Барлығын контроллер корпусына сыйғызу үшін жасалған бір ПХД -ге салу
  • Сол жақ аналогты таяқшаны қайта бекітіп, аяқтарын Arduino аналогтық кірістеріне жалғаңыз, осылайша оларды Arduino -ны реттеу үшін қолдануға болады.
  • Сымсыз контроллердің артқы корпусын алу және жобаны батарея бөліміне салу (бұл үшін USB кабелі үшін тесікті кесу қажет болады)

Ұсынылған: