Gebruik van een Arduino met een N64-controller (4 / 5 stap)

Stap 4: Arduino Code in diepte


De N64-Protocol
De bits verzonden naar en van de N64-controller op de ene draad-interface zijn gecodeerd in 4 µs breed pulsen. Een '0' is 3 µs lage en hoge 1 µs. Een '1' is 1 µs lage en 3 µs hoog.

De Arduino code in de methode N64_send of N64_receive zeer zorgvuldig getimede assemblagecode geschreven door Andrew Brown kunt bits-bang de data lijn om te communiceren met de controller. NOP blokken worden gebruikt om te wachten met de juiste hoeveelheid µs polling van de lijn van het verzenden van gegevens.

Bij het opstarten, 0x00 is verzonden aan de controller, en dan na dat de enige opdracht gebruikt 0x01 aan query voor de status van de controleur.

Gegevens coderen
Wanneer de gegevens worden ontvangen na een 0x01, komt het als 16-bits knop vaninformatie en 16 bits van analoge joystick informatie. De gegevens eruit als 44000000000000400044440044000444.

Het formaat van de bits is: A, B, Z, Start, Dup, Ddown, Dleft, cleren, 0, 0, L, R, Cup, Cdown, gespleten, Cright + 16 bits van de positie van de analoge stick.

De methode translate_raw_data() doorloopt de 32 bits, invoegen van hen in de struct N64_status. De eerste 16 bits zijn eenvoudig 1 of 0, maar de laatste 16 zijn vertaald in een geheel getal in het bereik (-80, 80) ongeveer door

voor (ik = 0; ik < 8; i ++) {}
N64_status.stick_x | = N64_raw_dump [16 + ik]? (0x80 >> ik): 0;
}

Nadat de gegevens in deze eenvoudige vorm, is het gemakkelijk om te doen wat je wilt. In dit geval, is het gewoon verzonden via de seriële poort in de loop-methode als een koord van binaire gegevens met twee gehele getallen voor de x- en y waarden.

De gegevens die worden verzonden via de seriële poort als volgt uitzien: 0400000000000400 63 -67 , hetgeen betekenen zou dat twee knoppen werden ingedrukt en de stick controle bij 63 was, -67.

Gerelateerde Artikelen

Zet een N64-Controller in een USB-Gamepad met behulp van een Arduino Leonardo

Zet een N64-Controller in een USB-Gamepad met behulp van een Arduino Leonardo

De gemakkelijkste manier om te zetten een N64-Controller in een USB-Gamepad is om te kopen een N64-Controller-Adapter voor ongeveer £15. Maar het kan ook worden gedaan hebt u een Arduino Leonardo of elke andere Arduino board met ingebouwde USB-commun
Met behulp van een NES-controller voor emulators met Arduino en Processing

Met behulp van een NES-controller voor emulators met Arduino en Processing

Ik heb verschillende manieren om een NES-controller aansluiten op uw computer voor gebruik als een emulator gamepad, maar geen leek eenvoudig en compatibel met wat ik had bij de hand.Zulks men werken alleen met Arduino Leonardo, Micro en vervaldatum:
Arduino kun je spelen van Atari 2600 en de ZX Spectrum met behulp van een NES-controller

Arduino kun je spelen van Atari 2600 en de ZX Spectrum met behulp van een NES-controller

dit instructable ziet u hoe met de NES-controller in de Atari 2600 of ZX Spectrum (met Kempston Interface) met behulp van een Arduino.Stap 1: Achtergrond praten ik heb onlangs verworven een paar Atari 2600s en een bos van joysticks. Beide consoles we
Gebruik van een Xbox 360-Controller als een muis

Gebruik van een Xbox 360-Controller als een muis

kocht ik in eerste instantie een Xbox 360-controller te gebruiken met emulators. Ik heb ontdekt dat niet alleen worden uitgevoerd met de taak van het nabootsen van een SNES-controller bewonderenswaardig, maar met een gratis programma u het in plaats
Het gebruik van een Force Gevoelige Resistor - Arduino tutorial Arduino Tutorial

Het gebruik van een Force Gevoelige Resistor - Arduino tutorial Arduino Tutorial

In deze tutorial leert u hoe u een FSR - Force Gevoelige Resistor met Arduino te vervagen van een LED. Deze sensor is een variabele weerstand net als een fotocel of flex sensor. De wijzigingen van de weerstand door druk uit te oefenen op het.Laten we
Het gebruik van een Sensor van de Flex - Arduino tutorial Arduino Tutorial

Het gebruik van een Sensor van de Flex - Arduino tutorial Arduino Tutorial

In deze "How to" tutorial leert u hoe u een flex-sensor met Arduino uno.Een flex-sensor maakt gebruik van koolstof op een strook van plastic te gedragen als een variabele weerstand. De wijzigingen van de weerstand door het buigen van de componen
Het gebruik van een Shift Register - Arduino tutorial Arduino Tutorial

Het gebruik van een Shift Register - Arduino tutorial Arduino Tutorial

In deze tutorial leert u hoe u een shift register (of serieel naar paralled controller). Het shift register zal geven je Arduino een extra 8 digitale uitgangen, met behulp van slechts 3 pinnen op je boardIn deze tutorial zal je de praktijk door bestu
Het gebruik van een fotoweerstand (of fotocel) - Arduino tutorial Arduino Tutorial

Het gebruik van een fotoweerstand (of fotocel) - Arduino tutorial Arduino Tutorial

Een fotoweerstand of een fotocel is een licht-gecontroleerde variabele weerstand. De weerstand van een fotoweerstand afneemt met toenemende incident lichtintensiteit. Een fotoweerstand kan worden toegepast in de lichtgevoelige detector circuits, en l
Hoe lees ik een kaart van de arduino met LabVIEW

Hoe lees ik een kaart van de arduino met LabVIEW

Deze video laat zien hoe om te lezen van een kaart van de Arduino met LabVIEW. LabVIEW heeft een groot gebruikersinterface dat het gemakkelijk maakt om gegevens van een Arduino-kaart worden opgeslagen. Een van de grootste uitdagingen bij het gebruik
Arduino All de dingen--S.M.A.R.T Alarm Clock-Setup voor vergaderingen, afspraken, herinneringen, en taken, deze klok maakt gebruik van een Arduino-Yún en uw Google agenda om automatisch alarm. en het ziet er ook Cool!

Arduino All de dingen--S.M.A.R.T Alarm Clock-Setup voor vergaderingen, afspraken, herinneringen, en taken, deze klok maakt gebruik van een Arduino-Yún en uw Google agenda om automatisch alarm. en het ziet er ook Cool!

S.M.A.R.T. wekkerSetup voor vergaderingen, afspraken, herinneringen en taken, deze klok automatisch instellen van alarmen maakt gebruik van een Arduino Yún en uw Google agenda. En het ziet er ook cool!Door Tony DiCola moeilijkheid: matigZou het niet
Het gebruik van een naald meter voor het meten van uw breinaalden & Hooks!

Het gebruik van een naald meter voor het meten van uw breinaalden & Hooks!

U hebt breipennen of haak haken zonder maten gemarkeerd op hen? Zo ja, zullen dit kleine instrument uw beste vriend!Veel breinaalden, verwisselbare naalden, DPN, vintage naalden en haaknaalden zijn ongemarkeerd! Dit kan zeer frustrerend zijn wanneer
Het gebruik van een 7 Segment Display - Arduino tutorial Arduino Tutorial

Het gebruik van een 7 Segment Display - Arduino tutorial Arduino Tutorial

Een zeven Segment weergeven, is een vorm van elektronische weergaveapparaat voor het weergeven van decimale cijfers, dat is een alternatief voor de meer complexe dot-matrix beeldschermen.Zeven segment displays worden veel gebruikt in digitale klokken
Het gebruik van een PSP als een game controller voor PC en PS3

Het gebruik van een PSP als een game controller voor PC en PS3

Hebben u ooit ging zitten om te spelen op je PS3 met een vriend en besefte dat u slechts één domeincontroller of was je spelen van een spel op uw PC en wilde dat u had een afzonderlijke controller? Nou nu kunt u in plaats van het kopen van een nieuwe
Het gebruik van een LCD-scherm - Arduino tutorial Arduino Tutorial

Het gebruik van een LCD-scherm - Arduino tutorial Arduino Tutorial

De LiquidCrystal-bibliotheek kunt u controle LCD beeldschermen die compatibel met de Hitachi HD44780-stuurprogramma zijn. Er zijn velen van hen daar, en kun je meestal vinden ze door de 16-pins-interface.In deze tutorial leert u hoe te gebruiken LCD