Arduino Leonardo / Micro (ATMega32u4) Sebagai Gamepad / Game Controller: 8 Langkah

Arduino Leonardo / Micro (ATMega32u4) Sebagai Gamepad / Game Controller: 8 Langkah

Isi kandungan:

Anonim

ATMega32u4 cip yang digunakan dalam Arduino Leonardo, Micro atau Pro Micro mempunyai kemampuan untuk menggunakan Deskriptor HID USB tersuai. Terima kasih keupayaan ini, kami boleh menjadikan Arduino kami sebagai Gamepad generik!

Perpustakaan ini mengandungi semua perkara untuk "mensimulasikan" gamepad PS2 (jadi dua thumbsticks dan 16 butang).

Bekalan:

Langkah 1: Memasang Perpustakaan

Perpustakaan memerlukan Arduino IDE 1.6.6 atau lebih tinggi untuk berjalan dengan betul.

Seterusnya kita perlu memuat turun perpustakaan.

Semua data dan dokumentasi disimpan dalam repositori GitHub:

github.com/GAMELASTER/ArduinoGamepad

Untuk muat turun, klik butang "Muat Turun ZIP" di sebelah kanan.

Buat direktori baru bernama "Gamepad" dalam (biasanya terdapat di Windows di) Dokumen> Arduino> perpustakaan, dan salin semua fail dari direktori "ArduinoGamepad-master" dalam ZIP yang dimuat turun ke dalam direktori itu.

Kemudian mulakan Arduino IDE dan perpustakaan muncul dalam senarai perpustakaan dan dalam senarai contoh.

Langkah 2: Komedi dan Lari Sket Ujian

Cubalah lakaran contoh seperti dalam imej, kumpulkan dan muat naik ke Arduino anda

Langkah 3: Memastikan Mengesahkan Perpustakaan

Pergi ke Panel Kawalan> Peranti dan Pencetak dan cari peranti anda (bagi saya yang Arduino Leonardo)> Klik kanan> Tetapan peranti permainan> Properties> Test.

Jika butang langkah demi langkah akan diaktifkan / dilumpuhkan, semuanya baik-baik saja!

Langkah 4: Menyambungkan Thumbaxises dan Butang ke Arduino

Untuk menguji sambungan sebenar antara perkakasan, Arduino dan PC, kita memerlukan beberapa butang atau ibu jari.

Saya mendapat dua thumbaxises + 2 butang (menekan ibu jari), menyambungkannya dengan Pro Micro dan mari membuat lakaran Arduino.

Saya menyambungkan Thumbstick kiri ke:

  • X ke A2
  • Y ke A3
  • Z hingga 4

Saya menyambungkan Thumbstick Hak untuk

  • X ke A0
  • Y ke A1
  • Z hingga 3

Langkah 5: Menguji Thumbsticks

tkkrlab.nl/wiki/Arduino_KY-023_XY-axis_joystick_module

Menyusun, menyebarkan dan membuka Monitor Serial.

Cuba bergerak dengan thumbstick untuk minimum - maksimum, cuba klik dsb.

Thumbsticks boleh menjadi berbeza. Bagi saya, ia mempunyai nilai relatif.

Nilai minimum paksi adalah 0 dan maksimum maksimum ialah 1000. Oleh itu secara logiknya pusat adalah 500.

Pada batang gunting saya masalah, pusat ini mempunyai nilai yang hampir sama (jadi), jadi apabila kita akan melakukan integrasi dengan perpustakaan, kita mesti membuat penentukuran, penstabilan dan pemformatan akhir nilai.

Dan Z (menekan) saya mempunyai 0 apabila ditekan dan 1 apabila dibebaskan (ini tidak benar, yang terbalik, pembalik melakukan INPUT_PULLUP).

Langkah 6: Mengintegrasikan Nilai ke Perpustakaan

Lakaran:

github.com/GAMELASTER/ArduinoGamepad/blob/master/examples/ThumbsticksTest/ThumbsticksTest.ino

Dalam lakaran ini saya menggabungkan thumbsticks saya kerana saya refferenced dalam langkah sebelumnya.

Sekarang saya akan menerangkannya.

  1. Untuk pertama kita perlu termasuk sebuah perpustakaan (baris 7)
  2. Seterusnya kita perlu menentukan nilai-nilai pusat untuk semua paksi, saya menyelesaikan semua 500, kerana pusat lalai (baris 10 - 13)
  3. Kami menentukan penggandaan untuk memformat nilai. Oleh kerana nilai maksimum adalah 127, kita mendapat pengganda dengan membahagikan 127 dengan pusat, jadi 500 (garisan 14 - 17)
  4. Memulakan kelas Gamepad (baris 20)
  5. Memulakan mod Pin (baris 23 - 28)
  6. Penentukuran thumbsticks bermula (baris 29)
    1. Kami menentukan pembolehubah, dan lain-lain ini (baris 72 - 73)
    2. Sedang … Ini adalah untuk "mengesahkan axis thumbsticks", jika berada di kawasan pusat (baris 74)
    3. Kami membaca Input Analog dari axises (baris 76 - 79)
    4. Kita perlu menyemak sama ada axises berada di "kawasan pusat", saya memilih julat 100 (garisan 80 - 83)
    5. Jika semua baik, ketika pergi lagi sehingga 8 mengesahkan, jadi kami mendapat pusat yang sebenarnya. (baris 84 - 89)
    6. Kami menetapkan nilai axises kepada pembolehubah global dan kami mengira semula pengganda untuk semua paksi, jadi realCenter dibahagikan dengan 127
  7. Dalam gelung kita membaca input analog dan beberapa butang (baris 33-37 dan beberapa baris lain)
  8. Sekarang kita perlu format dan menstabilkan nilai.
    1. Oleh itu untuk pertama kita perlu mendapatkan nilai paksi, di mana 0 adalah pusat, jadi Nilai Axis dikurangkan oleh Pusat Axis
    2. Kemudian kita berganda ini dengan pengganda paksi
    3. Dan untuk menstabilkan kami lantai itu (tiada bulat)
  9. Dan perkara terakhir ialah "menghantar" pembolehubah ke perpustakaan.

Bilangan butang diterangkan dalam imej atas.

Langkah 7: Menguji Keputusan Akhir

Menyusun, menyebarkan dan membolehkan bermain beberapa permainan!

Saya memilih Edge Mirror, tetapi Edge Mirror menyokong hanya gamepad XBOX 360, ini hanya boleh diselesaikan dengan memuat turun X360CE.

Langkah 8: Maklumat Tambahan, Bugs Etc.

Perpustakaan ini adalah sebahagian daripada projek saya di mana saya membina Konsol Retro Raspberry Pi yang disesuaikan dengan apa yang akan dipaparkan di dalam Instructables apabila ia akan dilakukan, buat masa sekarang saya menulis blog yang berkembang di blog saya, jangan lupa untuk melihatnya!

Dokumentasi, Bugs dan sebagainya adalah dalam GitHub:

github.com/GAMELASTER/ArduinoGamepad/

Atau ceritakan saya komen!