
Агуулгын хүснэгт:
2025 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2025-01-23 15:00

Би Xbox 360 хянагчтай Assetto Corsa тоглож байсан. Харамсалтай нь аналог саваагаар жолоодох нь тийм ч амар биш бөгөөд надад дугуй тохируулах зай байхгүй байна. Би хянагчийг бүхэлд нь жолооны хүрд болгон ашиглаж болно гэж бодоход илүү сайн жолооны механизмыг хянагч руу яаж оруулах талаар бодож олохыг хичээсэн.
Аналог мод нь хоёр потенциометртэй. Нэг нь босоо хөдөлгөөнийг, нөгөө нь хэвтээ хөдөлгөөнийг хэмждэг. Энэ нь тус бүрийг 1.6В дамжуулж, саваа хэр их хөдөлсөнийг тодорхойлохын тулд арчигч дээр үйлдвэрлэсэн хүчдэлийг хэмждэг. Энэ нь арчигч зүү дээр тодорхой хүчдэл өгөх замаар модны хөдөлгөөнийг хянах боломжтой гэсэн үг юм. (дэлгэрэнгүй мэдээллийг эндээс:
Энэ мод нь Arduino ашиглан акселерометрийн уншилтын өнцгийг тооцоолж, DAC -ээр аналог модны хөдөлгөөн болгон хувиргадаг. Тиймээс энэ нь аналог саваа оролт болгон ашигладаг аливаа тоглоомтой ажиллах ёстой.
Алхам 1: Танд хэрэгтэй болно:
Хэрэгсэл:
- Гагнуурын төмөр
- Гагнуур
- Гагнуурын сорогч/сүлжих
- Утас хуулагч
- Халив, магадгүй таны хянагчийн шурагнаас хамаарч Torx байж магадгүй (миний толгой бол хөндлөн толгой)
- Цавуу (илүү бат бөх цавуу биш байсан тул дараа нь салгаж авах боломжтой)
- Arduino програмчлах USB -ээс цуваа адаптер
Материал:
- Xbox 360 хянагч (тийм ээ!)
- Arduino Pro Mini (эсвэл клон) (илүү зохимжтой бол 3.3V. Хэрэв та 5V хувилбарыг ашигладаг бол хүчдэлийн хүчдэлийн хувиргагч хэрэгтэй болно)
- 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 -т тус тус холбох ёстой. DAC бол хамгийн төвөгтэй хэсэг юм. Хэрэв танд хоёр байгаа бол та тэдгээрийг хооронд нь холбох хэрэгтэй, хаа нэгтээ явахдаа цахилгаан болон шугамыг акселерометрт холбож, OUT утсыг тусад нь байлгаж болно.
DAC дээрх OUT зүү нь аналог модны дунд хэвтээ потенциометрийн зүү байсан хянагчийн ПХБ -ийн зүүтэй холбогдсон байх ёстой. Энэ нь аналог саваа хаана байсан бол дээд талд нь гурван тээглүүртэй эгнээ байна. Үүнийг дунд хэсэгт нь холбоно уу. Хэрэв танд өөр DAC байгаа бол үүнийг босоо потенциометрийн зүү (зүүн талын эгнээ) -тэй ижил аргаар холбоно уу. Триггер солигдоход та ар талаас тээглүүрт хүрч чадахгүй тул самбарын урд талд утас татах хэрэгтэй. Аналог модны эргэн тойронд дугуй хэлбэртэй хуванцар "хана" байдаг боловч аз болоход тэнд утас дамжуулж болох тохиромжтой цоорхой байдаг. Утаснууд нь хэргийн урд талын шураг шонгийн хаалтанд саад учруулахгүй байгаа эсэхийг шалгаарай.
Миний анхны төлөвлөгөө бол Arduino -г RAW зүүтэй холбогдсон USB кабелиас 5V хүчээр тэжээх байсан боловч би үүнийг туршиж үзэхэд энэ нь ажиллахгүй байсан. Arduino юу ч ажиллуулаагүй бөгөөд Arduino болон хянагч хоёулаа хэдхэн секундын дараа унтарсан байна. Гэсэн хэдий ч би захын хар залгуурын дэргэдэх самбарын урд талын хоёр тээглүүрээс 3.3V тогтмол гаралт байгааг олж мэдсэн. Энэ нь VCC болон RAW хоёуланд нь ажилладаг, гэхдээ би VCC -ийг сонгосон, учир нь энэ нь аль хэдийн зөв хүчдэл байсан бөгөөд үүнийг хавтангийн доод хэсэгт ойрхон байгаа DAC дээрх VCC утсанд гагнах, утсыг хэмнэх боломжийг олгодог.
Хэргийг тойрч гарах шаардлагатай байгаа хэрнээ маш олон хуванцар эд анги цухуйсан байдгийг анхаараарай, гэхдээ хэрэв та утаснуудаа наасан бол ганцхан удаа санаа зовох хэрэгтэй болно.
Энэ бүхнийг үгээр тайлбарлахад хэцүү тул зураг, бүдүүлэг бүдүүвчийг орууллаа.
Алхам 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;
Тоонуудын хувьд та мөн өөрчлөгдөх хэрэгтэй. нь хянагчийн өнцгийн хүрээ (pi) -ийг DAC -ийн утгуудын нийт мужид хуваасантай тэнцүү байна. (мужийн дээд хэсгийг хасахаас доош) Энэ нь хүчдэлийг өөрчлөхөд хүргэнэ, гэхдээ үр дүн нь таны хүссэн хүрээнээс гадуур байх болно. Тийм учраас танд хэрэгтэй. нь хүрээний доод талд үржүүлсэнтэй тэнцүү бөгөөд хянагчийн хөдөлгөөний далайцтай тэнцүү байна. (pi / 2) Хөдөлгөөний далайцын хагасыг нэмснээр энэ нь сөрөг тоо биш бөгөөд хүрээний доод хэсэгт үржүүлснээр таны хүссэн мужтай синхрончлогдсон болно.
Аравтын бутархайг бүхэл тоо болгон хөрвүүлэхэд C ++ нь дугуйрдаггүй. Энэ нь аравтын бутархайг тасалдаг тул 9.9 нь 9 болдог. Төгсгөлд нь 0.5 -ыг нэмснээр хагасаас дээш бүх зүйл дараагийн бүхэл тоонд шилжих болно.
Хөтөлбөрөө байршуулсны дараа jstest дээр ажилладаг эсэхийг шалгаарай.
Алхам 6: Хянагчийг дахин угсарна уу
Зүүн талын аналогийг хасахдаа хянагчийг салгасан шигээ буцааж тавь. Энэ нь одоо ажиллах ёстой. Энэ нь мэдэгдэхүйц хоцролт байхгүй бөгөөд энэ нь аналог мод ашиглахаас хамаагүй дээр гэж би бодож байна. Энэ нь хурдатгал хэмжигч ашигладаг тул гэнэтийн хөдөлгөөнд өртдөг, гэхдээ та үүнийг анзаарахын тулд өөрийн гараар явах хэрэгтэй болдог.
Алхам 7: Боломжит сайжруулалт
Зарим сайжруулалт хийх боломжтой. Үүнд:
- Бага төвөгтэй соронзон утас ашиглах
- Бүх зүйлийг хянагчийн хайрцагт байрлуулах зориулалттай нэг ПХБ дээр буулгах
- Зүүн аналог саваа дахин холбож, хөлөө Arduino дээрх аналог оролттой холбож, Arduino -ийг тохируулахад ашиглаж болно.
- Утасгүй хянагчийн арын хайрцгийг авч, төслийг зайны тасалгаанд оруулах (энэ нь USB кабелийн нүхийг огтлох шаардлагатай болно)
Зөвлөмж болгож буй:
Raspberry Pi MMA8452Q 3 тэнхлэг 12 бит/8 битийн дижитал хурдасгуур Python заавар: 4 алхам

Raspberry Pi MMA8452Q 3 тэнхлэг 12 бит/8 битийн дижитал хурдасгуур Python заавар: MMA8452Q нь ухаалаг, бага чадалтай, гурван тэнхлэгтэй, багтаамж сайтай, бичил машинаар тоноглогдсон 12 битийн нарийвчлалтай. Хэрэглэгчийн програмчлагдах уян хатан сонголтуудыг акселерометрт суулгасан функцүүдийн тусламжтайгаар хоёр тасалдалд тохируулж өгдөг
Утасгүй Xbox 360 хянагчийн бүрхүүлийг солих: 15 алхам (зурагтай)

Утасгүй Xbox 360 хянагчийн бүрхүүлийг солих: Xbox 360 хянагчийн бүрхүүлийг шинэ бүрхүүлд оруулах алхам алхмаар зааварчилгаа. Энэхүү гарын авлагыг оюутнуудад видео тоглоомоор дамжуулан техник хангамж, цахилгаан/компьютерийн инженерчлэл, компьютерийн шинжлэх ухааны зарчмуудын талаар үндсэн ойлголттой болоход туслах зорилгоор ашиглаж болно
Python ашиглан Raspberry Pi бүхий 3 тэнхлэгт хурдасгуур хэмжигч, ADXL345: 6 алхам

Python ашиглан Raspberry Pi-тэй 3 тэнхлэгт хурдасгуур хэмжигч: ADXL345: Таны Offroader-ийг удаан зогсох цэгийг шалгаж болох гаджетын тухай бодох. Хажуугаар нь унах магадлалтай үед хэн нэгнийг тохируулах нь тааламжтай биш гэж үү? Мэдээж тийм. Үнэн байх болно
Хурдасгуур хэмжигч, RF дамжуулагч-хүлээн авагч хос ашиглан дохио зангаагаар удирддаг Rover: 4 алхам

Хурдасгуур болон RF дамжуулагч-хүлээн авагчийн хос ашиглан дохио зангаагаар удирддаг Rover: Хөөе, та хэзээ нэгэн цагт энгийн гар хөдөлгөөнөөр жолоодож болох ровер бүтээхийг хүсч байсан боловч зураг боловсруулах, вэбкамертай харилцах нарийн ширийн зүйлийг хийх зориг гаргаж чаддаггүй. микроконтроллер, өгсүүрийг бүү хэл
USB -ээр ажилладаг шарагч! Энэхүү төсөл нь хуванцар / мод / цаасаар шатаж болно (хөгжилтэй төсөл нь маш нарийн мод байх ёстой): 3 алхам

USB -ээр ажилладаг шарагч! Энэ төсөл нь хуванцар / мод / цаасаар шатаж болно (хөгжилтэй төсөл нь маш нарийн мод байх ёстой): ЭНЭ USB ашиглан бүү хий !!!! Энэ нь бүх сэтгэгдлээс таны компьютерийг гэмтээж болохыг олж мэдсэн. миний компьютер сайн байна 600ma 5V утасны цэнэглэгч ашиглана уу. Би үүнийг ашигласан бөгөөд энэ нь сайн ажилладаг бөгөөд хэрэв та цахилгаан тэжээлийг зогсоохын тулд хамгаалалтын залгуур ашиглавал юу ч гэмтээхгүй