Arduino Leonardo / Micro (ATMega32u4) Som Gamepad / Game Controller: 8 trin

Arduino Leonardo / Micro (ATMega32u4) Som Gamepad / Game Controller: 8 trin

Indholdsfortegnelse:

Anonim

Chippen ATMega32u4, der bruges i Arduino Leonardo, Micro eller Pro Micro, har evnen til at bruge brugerdefinerede USB HID Descriptors. Tak denne evne, vi kan gøre vores Arduino være som generisk Gamepad!

Dette bibliotek indeholder alle ting, der kan "simulere" en PS2 gamepad (så to thumbsticks og 16 knapper).

forsyninger:

Trin 1: Installation af biblioteket

Biblioteket har brug for en Arduino IDE 1.6.6 eller højere for korrekt kørsel.

Næste skal vi downloade et bibliotek.

Alle data og dokumentation er lagret i et GitHub repository:

github.com/GAMELASTER/ArduinoGamepad

For download klik på knappen "Download ZIP" i højre side.

Opret en ny mappe med navnet "Gamepad" i (typisk placeret i Windows på) Dokumenter> Arduino> biblioteker, og kopier alle filer fra "ArduinoGamepad-master" -mappen i downloadet ZIP til den pågældende mappe.

Start derefter et Arduino IDE og bibliotek vises i listen over biblioteker og i eksempler listen.

Trin 2: Comiple og Kør et test skitse

Bare åbn et eksempel skitse som i billede, kompilere det og upload det til din Arduino

Trin 3: Lad os bekræfte, at du arbejder med et bibliotek

Gå til Kontrolpanel> Enheder og printere og søg på din enhed (for mig er det en Arduino Leonardo)> Højreklik> Indstillinger for spil enhed> Egenskaber> Test.

Hvis knapper trin for trin går aktiveret / deaktiveret, er alt okay!

Trin 4: Tilslutning af tommelfinger og knapper til Arduino

For at teste en reel forbindelse mellem hardware, Arduino og PC har vi brug for nogle knapper eller thumbaxises.

Jeg har to thumbaxises + 2 knapper (tryk på thumbaxises), tilsluttet den med Pro Micro og lad os lave en Arduino Sketch.

Jeg forbinder Left Thumbstick til:

  • X til A2
  • Y til A3
  • Z til 4

Jeg forbinder Right Thumbstick til

  • X til A0
  • Y til A1
  • Z til 3

Trin 5: Testning af tommelfingeren

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

Kompilér, implementer og åbner Serial Monitor.

Prøv at flytte med tommelfinger til minimum - maksimum, prøv at klikke osv.

Tommelfingerne kan være forskellige. For mig har det en relativ værdi.

Mindste værdi af akse er 0 og fuldt maksimum er 1000. Så logisk er midten 500.

Ved min tommelfinger er problemet, har midten (næsten) stadig anden værdi, så når vi skal integrere med biblioteket, skal vi foretage kalibrering, stabilisering og endelig formatering af værdier.

Og Z (trykke) har jeg 0, når den trykkes og 1, når den er frigivet (dette er ikke sandt, dets inverterede, inverteren gør en INPUT_PULLUP).

Trin 6: Integrering af værdier til bibliotek

Skitse:

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

På denne skitse integrerede jeg mine tommelfingre, som jeg refferenced i tidligere trin.

Nu vil jeg beskrive det.

  1. Først skal vi have et bibliotek inkluderet (linje 7)
  2. Dernæst skal vi definere en centerværdier for alle akser, jeg satte alle 500 op, fordi det er et standardcenter (linje 10-13)
  3. Vi definerer en multiplikator til formatering af værdier. Fordi den maksimale værdi er 127, får vi multiplikator ved at dividere 127 med midten, så 500 (linje 14-17)
  4. Initialisering af en Gamepad klasse (linje 20)
  5. Initialisering af pin-tilstande (linie 23-28)
  6. En kalibrering af tommelfingre begynder (linje 29)
    1. Vi definerer en variabler, og andre dette (linje 72 - 73)
    2. Et stykke tid … Denne stund er for at "verificere akser af tommelfingre", hvis det er i centerområdet (linje 74)
    3. Vi læser en analog indgang fra akser (linje 76 - 79)
    4. Vi skal kontrollere, om akser er i et "center-område", jeg har valgt et 100-område (linje 80 - 83)
    5. Hvis er alt godt, mens du går igen indtil er 8 god bekræfter, så får vi et virkeligt rigtigt center. (linie 84-89)
    6. Vi sætter aksisværdier for globale variabler, og vi beregner en multiplikator for alle akser, så realCenter divideret med 127
  7. I loop læses analoge indgange og nogle knapper (linje 33 - 37 og nogle andre linjer)
  8. Nu skal vi formatere og stabilisere værdier.
    1. Så først skal vi få akseværdi, hvor 0 er centreret, så Akseværdi minus Axis Center
    2. Så vi dette multiplikator med flere akse
    3. Og for at stabilisere vi gulv det (ingen runde)
  9. Og sidste ting er "send" variabler i et bibliotek.

Antallet af knapper er beskrevet i øverste billede.

Trin 7: Afprøvning af et endeligt resultat

Kompilér, indsæt og lad os spille et spil!

Jeg valgte en Mirrors Edge, men Mirrors Edge understøtter kun en XBOX 360 gamepad, det kan simpelthen løses ved at downloade X360CE.

Trin 8: Mere info, Bugs Etc.

Dette bibliotek er en del af mit projekt, hvor jeg opbygger brugerdefineret håndholdt Raspberry Pi Retro Console, hvad der vil blive bogført her i Instructables, når det bliver gjort, for nu skriver jeg blogs for at udvikle på min blog, glem ikke at se det!

Dokumentation, Bugs osv. Er i GitHub:

github.com/GAMELASTER/ArduinoGamepad/

Eller fortæl mig det i en kommentar!