Controle van de Arduino met Gamepad (3 / 5 stap)

Stap 3: Krijgen INPUT van GAMEPAD


Nu, dat we hoe de gegevens te verzenden naar de Arduino weten, alleen moeten we om te leren hoe te verwerven van de input van de XBOX-gamepad.

In deze sectie zullen we leren de basisprincipes van XInput en schrijven een zeer eenvoudig programma, waarin de stand van de gamepad in de console output. Ook zullen we sommige belangrijke aspecten van voorbehandeling de invoerwaarden Voorkom problematisch analoge stick invoerbereik ("dode zones") leren.

DE BASISPRINCIPES

XInput API biedt het vervoermiddel krijgen input van de XBOX 360 controllers en bevat een scala aan hulpmiddelen worden de effecten van de controller (klucht feedback), verwerken van audio input/output voor gaming headsets en andere coole dingen doen.

XInput ondersteunt maximaal 4 controllers, maar in onze situatie alleen #0 controller zal worden gebruikt als standaardwaarde.

Wij zullen XInputGetState() functie gebruiken om het bijwerken van de huidige stand van de gamepad. Duurt het 2 parameters: de gamepad-ID (die is ingesteld op 0 in de meeste gevallen) en de aanwijzer aan XInput staat variabele. De geretourneerde waarde van de XInputGetState kan worden gebruikt om te controleren van de beschikbaarheid van de gamepad. De waarde van ERR_SUCCESS betekent dat de gamepad brandt, en XInput staat nu zijn huidige staat heeft.

XINPUT_STATE bestaat uit de volgende elementen:

dwPacketNumber geeft aan of de gamepad staat is gewijzigd.

Gamepad is een gegevenstype, waarmee de huidige status van de gamepad, met inbegrip van de analoge stick posities, trigger waarden, D-stootkussen en knop vlaggen.

sThumbLX, sThumbLY, sThumbRX en sThumbRY zijn 16-bits ondertekend gehele getallen, die nemen de waarden van −32, 768 tot 32.767. Deze komen overeen met de huidige posities van de analoge stick.

bLeftTrigger en bRightTrigger nemen waarden in de 0..255 bereik.

wButtons vertegenwoordigt de status van alle knoppen op een XBox-controller, waar elke bit komt met de huidige status van elke afzonderlijke knop overeen. Als we willen om te controleren of de X-knop werd ingedrukt moeten we de volgende bewerkingen uitvoeren:

De onderstaande lijst vindt u alle knopen en hun overeenkomstige bitmaskers:


LATEN WE DE PRAKTIJK

Op dit punt hebben we alle instrumenten moeten we ons eerste programma met XInput schrijven. Het is belachelijk eenvoudig, maar het zal helpen om te begrijpen hoe dit proces werkt en welke elementen voor XInput moeten we.

Zodra u de oplossing bouwen en uw programma uitvoert, ziet u de uitvoer te wijzigen wanneer u thumbsticks of drukknoppen op uw gamepad verplaatsen. We stuurt deze gegevens naar de Arduino board in de volgende sectie van dit leerprogramma.

Op dit moment wil ik u aandacht te besteden aan de uitvoer, wanneer u om het even wat niet doet. Waarden van LX, RX en RY LY zijn niet gelijk is aan 0, aangezien we verwachten ze dat. Dit gebeurt voor een aantal redenen, maar wat het belangrijkste is dat we ons bewust van dit fenomeen!

Deze schommelingen en ongerijmdheden in waarden worden 'dode zones' genoemd. We moeten om zich te ontdoen van deze vervelende anomalie vindt u de laagste marginale waarde waartegen we overwegen kunnen dat de analoge stick eigenlijk in bepaalde richting wordt geduwd.

Om dit te doen moeten we definiëren een drempel van deadzone en vergelijken met huidige waarden. Bekijk MSDN referentie voor meer info.

Ondertussen, gebruiken deze voorbeeldcode om deze waarden te corrigeren:

Er zijn ook vooraf gedefinieerde dode zone waarden voor links en rechts thumbsticks en triggers. U kunt gebruiken, of uw eigen drempels (in mijn geval ~ 6500 werkte voor linker- en stick) vast, maar vergeet niet dat deze waarden grotendeels afhangen van hoe beat-up uw gamepad is!


EXTRA LEZING

De enige extra bron ik ga om te vermelden is dit één: XInput Game Controller API's

Het heeft alles wat die u weten over XInput moet, met inbegrip van complete referentie en handige programmering gids.

Dat is het voor dit deel. Nu, laten we proberen te combineren onze vaardigheden in de programmering van gamepads en seriële verbindingen naar controle Arduino op afstand! ... in het geval u vergeten waar we begonnen...

Gerelateerde Artikelen

Controle van de Arduino met behulp van android app

Controle van de Arduino met behulp van android app

In deze instructables ga ik uit te leggen hoe de controle van de arduino IO pinnen met behulp van een android app, die we hier schrijven.De mededeling zal via ethernet en gebruiken we het GET-verzoek voor het activeren van de IO.Laten we beginnen!Sta
Controle van een Arduino met PHP

Controle van een Arduino met PHP

hier is hoe te maken van je Arduino doen meer dan het internet zonder een ethernet of wifi schild. Dit is een eenvoudige manier om uw project bestuurbaar overal in de wereld!Stap 1: Platform CompatabilityDeze methode werkt niet onder Windows. Ik kan
Controle van een Arduino met uw iPhone

Controle van een Arduino met uw iPhone

Hey!Dit Instructable toont je hoe om te controleren van een Arduino met een iPhone zonder te programmeren van uw eigen applicatie van iOS. We gonna een LED flash maar u kunt ook een heleboel andere dingen mee doen!We zullen met behulp van een Arduino
Controle van de Arduino met visual basic 6.0

Controle van de Arduino met visual basic 6.0

Dit instructable is onderdeel van mijn boek Arduino + visual basic 6.0 (aanbrengen in uw eigen software controle arduino Robot.Visual basic 6.0 is een zeer oude versie sommigen kunnen vragen waarom we gebruik wilt maken van visual basic 6.0. Visual b
Controle van uw Arduino met een afstandsbediening

Controle van uw Arduino met een afstandsbediening

benieuwd over hoe om te controleren alles in uw huis met een eenvoudige afstandsbediening? Het is vrij eenvoudig en goedkoop.Stap 1: Verzamel spullen Hier is wat u nodig heeft:-Arduino (ik gebruik UNO)-Solderless breadboard-Een infrarood ontvanger-So
Controle van een Arduino met uw telefoon.

Controle van een Arduino met uw telefoon.

In dit Instructable zal ik laten zien hoe om te controleren uw spullen met uw telefoon en de arduino board. Ik heb alles gecontroleerd uit rookmachines ook Kerstmis licht is met dit programma.Video:Sorry dat de video is nogal vreemd, want mijn camera
Controle van de arduino met behulp van Blynk via usb

Controle van de arduino met behulp van Blynk via usb

Dit is mijn tweede instructable. In dit instructable zal ik laten zien hoe u kunt besturen LED met behulp van Blynk.Blynk is een applicatie die ons dashboard, evenals connectiviteit biedt. die u kunt downloaden van google play store (voor Android). &
Hoe de controle van de arduino met een mail

Hoe de controle van de arduino met een mail

Er zijn een heleboel oplossingen waarmee een Arduino board: web oplossingen, desktop applicatie oplossingen, hardwareoplossingen. Maar hoe zit het met e-mail? Ja, vind je iets op het web, maar ze nodig hebben voor ethernet schilden en vaak is Arduino
Controle van de Arduino met Android telefoon via Bluetooth

Controle van de Arduino met Android telefoon via Bluetooth

Hallo mensen, hier kunt u leren hoe u kunt besturen Arduino met Android telefoon via Bluetooth. U kunt uw smartphone als een afstandsbediening voor u verlichting van het huis systeem of u kunt gebruiken als een drone externe enz.Om de verbinding tuss
Controle van de Arduino met behulp van PHP

Controle van de Arduino met behulp van PHP

Ik heb onlangs gezien een heleboel problemen met betrekking tot PHP en Arduino. Vele mensen weten niet over feiten zoals die een arduino een 2 tweede (!) vertraging moet voordat het eventuele berichten via seriële kunt ontvangen. Er zijn een paar and
Controle van een Arduino met een horloge (TI eZ430 Chronos)

Controle van een Arduino met een horloge (TI eZ430 Chronos)

het horlogeDe Texas Instruments eZ430 Chronos is een coole gadget. Het heeft bidirectionele radiocommunicatie, en een gehele bos van sensoren: temperatuur, druk, versnelling.Het is in feite een development kit voor de MSP-430 (een low-power microcont
Controle van de Arduino met Blynk [USB] [beginners] Wireless overal in de wereld

Controle van de Arduino met Blynk [USB] [beginners] Wireless overal in de wereld

Hier is hoe u kunt besturen arduino met blynk via USB van overal in de wereld!Stap 1: Hier is hoe u kunt besturen arduino met blynk via USB van overal in de wereld!Bekijk en geniet!
Controle van de Arduino met Facebook - de gemakkelijke manier

Controle van de Arduino met Facebook - de gemakkelijke manier

Hallo vrienden vandaag ga ik u tonen hoe te verbinden uw Arduino aan FACEBOOK en extern beheren uw Arduino van overal in de wereld via uw Facebook-Account. OK dit is hoe het werkt, er is een Facebook-account die is aangesloten op de Arduino via een c
Controle van de arduino met visual studio via bluetooth

Controle van de arduino met visual studio via bluetooth

Hallo iedereen,Hier zullen we beheren een via bluetooth met uw pc o.l.v. een progam wirtten met visual studiowat je nodig hebt is:1) Arduino (een)2) Bluetooth-Module (hc05 of hc 06)3) geleid4) 2 weerstanden (10ko en 15ko)en u kunt het doen ;)alle cod