Knoppen toevoegen aan uw X52-Pro-joystick met een Arduino Micro (7 / 12 stap)

Stap 7: Vouw uw schets om de gegevens te verzenden

Nu uw omgeving is geconfigureerd kunt u de code toevoegen aan uw testscript maken gebruik van de HID "descriptor".

Neem een kopie van uw testscript en wijzig het als volgt. Eerst moet u bij de bovenkant van het manuscript om toe te voegen een variabele om te houden van de status van de joystick en een andere voor het bijhouden van de hat-switch

 // Create a variable to hold the entire state of the device to pass over USB to the HID driverJoyState_t joySt; // A variable to help us manage the 4 hat buttons to make an 8-way hat if we want byte hatButtons; 

Voeg vervolgens een lijn aan de onderkant van de Setup-functie om de beginstatus:

 joySt.buttons = 0; // Set the initial state of the buttons 

In dit voorbeeld de eerste 8 knoppen zijn enkel eenvoudige knoppen dus kunnen we gewoon door alle knoppen, minder de laatste vier voor de hoed., en set of duidelijk de juiste bit rekenen op de joySt.buttons-variabele.

 if (i < (switchCount - 4)) { // We're looking at all but the last 4 pins as simple buttons in this section // if the button state has changed and it's currently pressed if ((buttonState != buttonLastState[i]) && (buttonState == LOW)) { // Set the button bit joySt.buttons = bitSet(joySt.buttons, i); } // if the button state has changed and it's currently released if ((buttonState != buttonLastState[i]) && (buttonState == HIGH)) { // Unset the buttonbit joySt.buttons = bitClear(joySt.buttons, i); } // save the current button state for comparison next time: buttonLastState[i] = buttonState;} else { ... 

We behandelen de laatste vier knoppen als een hat-switch. Er zijn een aantal manieren voor het verwerken van een hat-switch. Kunt u het behandelen als een eenvoudige 4-weg-hoed (Noord, Oost, Zuid, West), of u kunt gaan voor een 8-way hoed (N, NE, E SE, S, SW, W, NW). Een 4-weg-hoed is vrij eenvoudig te behandelen zodat zal ik de 8-weg versie hier tonen u. De 8-weg-functionaliteit betekent dat u omgaan met meer dan één knop wordt ingedrukt moet, zodat u kunt dingen niet instellen als je langs gaat zoals met de knoppen. Dus, naar aanleiding van de vorige code, voor de laatste vier knoppen u moet opnemen van de staat van elk in de variabele die we eerder hebt gemaakt. Ik ben met behulp van een bitmasker om dingen eenvoudiger als we kunnen gewoon lezen de geheelwaarde daarna om de 'richting' van de hoed.

 } else { // We're now looking at the remaining four buttons as hat switches in this section // Using a bit-mask, set the bit that corresponds to each button so we can // determine the state of all four buttons in one go later on if (buttonState == LOW) { // Set the bit if the button is pressed bitSet(hatButtons, i - 8); } else { // Clear the bit if the button is NOT pressed bitClear(hatButtons, i - 8); } } 

Nu weten we die van de hoed knoppen zijn ingedrukt wij kunnen luiden naar de waarde van de variabele hatButtons en doorgeven van de juiste waarde aan het joySt-object:

 // Determine value for hatSw1 according to the buttons that are pressed// This uses the last four bits in the byte so we just need to check the value of // the byte and set the joySt.hatSw1 value if we have a single button pressed or // a valid pair of buttons pressed. Below i've shown what's pressed using UPPER // case and what's not pressed using lower case. i.e. ULdr = UP and LEFT pressed // Key: UP = bit 1, LEFT = bit 2, DOWN = bit 3, RIGHT = bit 4 switch (hatButtons) { case 0: joySt.hatSw1 = 8; break; // uldr : center : hatButtons = B00000000 case 1: joySt.hatSw1 = 0; break; // Uldr : 0 : hatButtons = B00000001 case 3: joySt.hatSw1 = 1; break; // ULdr : 45 : hatButtons = B00000011 case 2: joySt.hatSw1 = 2; break; // uLdr : 90 : hatButtons = B00000010 case 6: joySt.hatSw1 = 3; break; // uLDr : 135 : hatButtons = B00000110 case 4: joySt.hatSw1 = 4; break; // ulDr : 180 : hatButtons = B00000100 case 12: joySt.hatSw1 = 5; break; // ulDR : 225 : hatButtons = B00001100 case 8: joySt.hatSw1 = 6; break; // uldR : 270 : hatButtons = B00001000 case 9: joySt.hatSw1 = 7; break; // UldR : 315 : hatButtons = B00001001 } 

Nu alles wat die nog moet worden gedaan aan de huidige status voor het bijwerken van de computer output is

 // Call Joystick.setState and send the data to the computerJoystick.setState(&joySt); 

Ik heb de code voor dit voorbeeld om deze stap te slaan uw vingers gehecht.

Gerelateerde Artikelen

Knoppen toevoegen aan uw muis

Knoppen toevoegen aan uw muis

Ik heb spelen FPS games op mijn PC voor een tijdje nu, en ik vond mezelf vaak behoefte aan meer knoppen op mijn muis. Dat is waarom ik kocht in één keer een Logitech G9, maar in sommige spellen zelfs die de knoppen op het extra 4 die leek te zijn paa
Tekst als watermerk toevoegen aan uw YouTube-video's met AVS Video Editor 7.1

Tekst als watermerk toevoegen aan uw YouTube-video's met AVS Video Editor 7.1

Tekst als watermerk toevoegen aan uw YouTube-video's met AVS Video Editor 7.1
Met behulp van een joystick met je Arduino

Met behulp van een joystick met je Arduino

Joysticks zijn een grote bron van input voor een project. Vooral voor Robotica. Als hardware hackers hebben de meesten van ons hield altijd dit soort dingen. Behalve de nieuwe jongens daartoe vindt het misschien moeilijk te begrijpen van het concept
Controle LED's met een Arduino van een C# programma

Controle LED's met een Arduino van een C# programma

heb je ooit wilde om te controleren enkele LED's met je Arduino vanuit een programma dat u hebt geschreven? Nou ben ik hier om u te helpen met dat.. Dit is mijn eerste ' kunnen dus please help me uit als ik langs de weg omhoog knoeien. En voel je vri
ZAPpelin, of hoe om te trainen uw luchtballon met een Arduino en IR afstandsbediening

ZAPpelin, of hoe om te trainen uw luchtballon met een Arduino en IR afstandsbediening

Is het vliegen van seal? Een fladderende vreemdeling?Nee het is een ZAPpelin, een Arduino gecontroleerde indoor blimp, setup om te leren in de signalen van een externe IR naar commando.Dit project kwam tot leven op de derde Arduino Jam Februari 15e t
Hoe te meten van de temperatuur zeer nauwkeurig met een Arduino en een TSYS01 Temperatuur Sensor Board.

Hoe te meten van de temperatuur zeer nauwkeurig met een Arduino en een TSYS01 Temperatuur Sensor Board.

Tijdens zijn studie in de Universiteit werden we uitgedaagd als onderdeel van een cursus werken in het ontwerpen van een doos met zeer nauwkeurige temperatuurregeling. Mocht het project te doen slagen, moesten meerdere vakken worden gebouwd en gebrui
ARD-e: de robot met een Arduino als een brein

ARD-e: de robot met een Arduino als een brein

het maken van een opensource gecontroleerd Arduino robot voor onder $100.Hopelijk na het lezen van dit instructable u zal zitten kundig Neem uw eerste stap in de robotica. ARD-e kost ongeveer 90 dollar tot $130 afhankelijk van hoeveel vrije elektroni
Beheersing van een MIDI-CC in Ableton Live met een Arduino Uno

Beheersing van een MIDI-CC in Ableton Live met een Arduino Uno

In dit instructable zullen we gebruiken een potentiometer op een Arduino Uno om controle van een MIDI-CC in Ableton Live. Een MIDI CC staat voor continue Controller, dat wil zeggen een getal in het bereik van 0 tot 127 inclusieve te moduleren iets me
Controle van een Camera met een Arduino en RS232 Shield

Controle van een Camera met een Arduino en RS232 Shield

Dit leerprogramma zal u tonen hoe u kunt controleren vele verschillende aspecten van de werking van een camera's met een Arduino. Deze bewerking kan worden de pan en tilt camera, zoom en focus van de lens, en RGB kenmerken. De Arduino zal gebruik mak
Beheersing van een RC Servo motor met een Arduino en twee pulsschakelaars

Beheersing van een RC Servo motor met een Arduino en twee pulsschakelaars

de naam zegt het al. Beheersing van een RC auto servomotor met een Arduino en sommige weerstanden, jumper draden en twee tactiele schakelaars. Ik maakte dit de tweede dag kreeg ik mijn Arduino, dus ik erg trots op mezelf ben.Stap 1: Onderdelenlijst O
Programmering Arduino met een Arduino

Programmering Arduino met een Arduino

Dit is mijn eerste Instructable. In dit Instructable ga ik u tonen hoe te programmeren van een Arduino met een Arduino. Er zijn geen stuurprogramma's nodig! Dit Instructable is ook handig voor het uploaden van schetsen aan de Chinese ArduinoStap 1: D
Beheersing van een stappenmotor met een Arduino

Beheersing van een stappenmotor met een Arduino

Dit leerprogramma zal u tonen hoe te bedienen van een stappenmotor die werd gered van een oude printer met een Arduino.Stap 1: Wat is een Stepper Motor? Een stappenmotor bestaat uit twee delen, een rotor en een stator. De rotor is het deel van de mot
Lage hoogte milieubewaking met een Arduino gebaseerd weer Instrument en Remote Sensing Platform van Aeropod

Lage hoogte milieubewaking met een Arduino gebaseerd weer Instrument en Remote Sensing Platform van Aeropod

ProjectoverzichtStudenten op New Lothrop High School in Michigan hebben samengewerkt om te bouwen van een lage hoogte remote sensing platform genaamd een "Aeropod" en het uitgerust met een "Arduino" gebaseerd weer instrument om sfeervo
Controle van EL draad met een Arduino

Controle van EL draad met een Arduino

In dit instructable ik zal u tonen hoe u kunt besturen van EL draad met een Arduino.Wat u zult moeten:EL Wire en omvormer - adviseer ik http://ez-el.com/ez-el-wire/10ft-ez-el-wire-3v-inverter-kit/Arduino of een micro-controller die een relay kunt bep