Lägga till knappar i din X52-Pro Joystick med en Arduino mikro (6 / 12 steg)

Steg 6: Lägg till din Arduino miljön filer HID kod

Nu har du din deskriptor måste du lägga till din Arduino miljö så det kan programmera det vidare till din enhet. För att göra detta måste du ändra ett par filer. Navigera till dokument/Arduino/hårdvara/arduino/kärnor/arduino (Mac) eller C:\Program Files (x86) \Arduino\hardware\arduino\cores\arduino (Win) katalog. I det ta säkerhetskopior av filerna HID.cpp och USBAPI.h skull.

Öppna HID.cpp i din favorit texteditor (EditPlus 2 eller Notepad ++ är bra för Windows, Text Wrangler är användbart för Mac) och leta långt upp i följande avsnitt:

#if defined(USBCON)
#ifdef HID_ENABLED
#define RAWHID_ENABLED
Singletons för mus och tangentbord
Mouse_ mus;
Keyboard_ tangentbord;

Nu måste du lägga till en definition och en singleton variabel enligt följande:

#if defined(USBCON)
#ifdef HID_ENABLED
#define RAWHID_ENABLED
#define JOYHID_ENABLED
Singletons för mus och tangentbord
Mouse_ mus;
Keyboard_ tangentbord;
Och nu en joystick emot alltför
Joystick_ Joystick;

Leta längre ner för avsnittet RAWHID:

#if RAWHID_ENABLED
HID-RAW
0X06, LSB(RAWHID_USAGE_PAGE), MSB(RAWHID_USAGE_PAGE), / / 30
0X0A, LSB(RAWHID_USAGE), MSB(RAWHID_USAGE),
0xA1, 0x01, / / samling 0x01
0X85, 0X03, / / REPORT_ID (3)
0x75, 0x08, / / rapport storlek = 8 bitar
0x15, 0x00, / / logiska minsta = 0
0x26, 0xFF, 0x00, / / logiska maximala = 255
0x95, 64, / / rapport greve TX
0x09, 0x01, / / användning
0x81, 0x02, / / ingång (matris)
0x95, 64, / / rapport greve RX
0x09, 0x02, / / användning
0x91, 0x02, / / output (matris)
0xC0 / / slutet samling
#endif
};

Nu ändra detta om du vill ändra #if till #ifdef och infoga din nya HID deskriptor inuti sin egen #ifdef avsnitt

#ifdef RAWHID_ENABLED
HID-RAW
0X06, LSB(RAWHID_USAGE_PAGE), MSB(RAWHID_USAGE_PAGE), / / 30
0X0A, LSB(RAWHID_USAGE), MSB(RAWHID_USAGE),
0xA1, 0x01, / / samling 0x01
0X85, 0X03, / / REPORT_ID (3)
0x75, 0x08, / / rapport storlek = 8 bitar
0x15, 0x00, / / logiska minsta = 0
0x26, 0xFF, 0x00, / / logiska maximala = 255
0x95, 64, / / rapport greve TX
0x09, 0x01, / / användning
0x81, 0x02, / / ingång (matris)
0x95, 64, / / rapport greve RX
0x09, 0x02, / / användning
0x91, 0x02, / / output (matris)
0xC0 / / slutet samling
#endif
*** Här är där RAW_HID har omvandlats till en spelkontroll enhet
*** Inspirerad av helmpcb.com/electronics/usb-joystick
*** Kolla www.usb.org/developers/hidpage/ för mer än du någonsin behöver veta om USB-HID-
*** HID säkerhetsbeskrivningen skapas med verktyget HID deskriptor från www.usb.org/developers/hidpage/dt2_4.zip
#ifdef JOYHID_ENABLED
0x05, 0x01, / / USAGE_PAGE (generiska skrivbordet)
0x09, 0x05, / / användning (spelkontroll)
0xa1, 0x01, / / samling (ansökan)
0x85, 0x03, / / REPORT_ID (3) (detta är viktigt när HID_SendReport() anropas)
0xA1, 0x00, / / samling (fysiska)
8 knappar
0x05, 0x09, / / USAGE_PAGE (knapp)
0x19, 0x01, / / USAGE_MINIMUM (knappen 1)
0x29, 0x08, / / USAGE_MAXIMUM (knappen 8)
0X15, 0X00, / / LOGICAL_MINIMUM (0)
0X25, 0X01, / / LOGICAL_MAXIMUM (1)
0X95, 0X08, / / REPORT_COUNT (8)
0X75, 0X01, / / REPORT_SIZE (1)
0x81, 0x02, / / ingång (Data, Var, Abs)
1 riktningsknapp
0x05, 0x01, / / USAGE_PAGE (generiska skrivbordet)
0x09, 0x39, / / användning (Hat switch)
0X15, 0X00, / / LOGICAL_MINIMUM (0)
0X25, 0X07, / / LOGICAL_MAXIMUM (7)
0X35, 0X00, / / PHYSICAL_MINIMUM (0)
0X46, 0X3B, 0X01, / / PHYSICAL_MAXIMUM (315)
0x65, 0x14, / / enhet (Eng röta: kantiga Pos)
0X75, 0X04, / / REPORT_SIZE (4)
0X95, 0X01, / / REPORT_COUNT (1)
0x81, 0x02, / / ingång (Data, Var, Abs)
Stoppning (4 byte)
0X75, 0X04, / / REPORT_SIZE (4)
0X95, 0X01, / / REPORT_COUNT (1)
0x81, 0x03, / / ingång (Cnst, Var, Abs)
1 D-pads - Dummy så Elite: farligt Europaparlamentet erkänner det
0x05, 0x01, / / USAGE_PAGE (generiska skrivbordet)
0X09, 0X30, / / ANVÄNDNING (X)
0X09, 0X31, / / ANVÄNDNING (Y)
0X15, 0X81, / / LOGICAL_MINIMUM (-127)
0X25, 0X7F, / / LOGICAL_MAXIMUM (127)
0X75, 0X08, / / REPORT_SIZE (8)
0X95, 0X02, / / REPORT_COUNT (2)
0x81, 0x02, / / ingång (Data, Var, Abs)
0XC0, //END SAMLING
0xC0, //END samling #endif
};

Nu är gjort, måste vi lägga till lite kod för att ta emot data från vår skiss som vi skapade tidigare och skicka rapporten. Titta längre ner för följande kod:

//=============================================================================
//=============================================================================
Mus
Mouse_::Mouse_(void): _buttons(0)
{
}

Lägga till en ny bit av kod för att hantera data som följer direkt ovanför detta

//=============================================================================
//=============================================================================
Joystick
Användning: Joystick.move (ingångar gå här)
//
Dataformatet rapport måste matcha definierats i deskriptorn exakt
antingen så fungerar det inte eller pc kommer att göra en röra av uppackning data
//
Joystick_::Joystick_()
{
}
#define joyBytes 4 / / bör motsvara sizeof(JoyState_t)
void Joystick_::setState(JoyState_t *joySt)
{
uint8_t data [joyBytes];
data [0] = joySt -> knappar & 0xFF;
data [1] = joySt -> hatSw1;
data [2] = joySt -> left_x;
data [3] = joySt -> left_y;
HID_SendReport (rapport nummer, matris med värden i samma ordning som HID deskriptor, längd)
Joysticken anges som med hjälp av rapporten 3 i deskriptorn. Det är där "3" kommer från
HID_SendReport (3, data, joyBytes).
}

Här definierar vi antalet byte som skickas. I detta fall 2-1 byte för knapparna och 1 byte för hatten, inklusive stoppning. Sedan har vi den enkla funktionen emot data som skickas från skissen, hacka det upp och sedan spotta ut med funktionen HID_SendReport. Här är mycket enkel, men du kan hitta mer komplicerat dem någon annanstans. Denna webbplats har ett bra exempel på en 8-axlig, 32-knapp, 1 hatt inställning. Detta har hjälpt mig mycket men var alldeles för komplicerat för vad jag ville så jag förenklat det så mycket som jag kunde.

När du har gjort allt detta, spara filen och öppna USBAPI.h. I den här filen skapar vi en struct och klass för objektet joystick. Hitta följande kod:

//==========================================================================
//==========================================================================
Mus
#define MOUSE_LEFT 1
#define MOUSE_RIGHT 2

Som tidigare, infoga denna kod direkt ovanför detta

//=============================================================================
//=============================================================================
Joystick
Genomföras i HID.cpp
Listan över parametrar här måste matcha genomförandet i HID.cpp
TypeDef struct JoyState / / ganska själv explanitory. Enkla tillstånd att lagra alla parametrar som joystick
{
uint8_t knappar;
uint8_t hatSw1;
int8_t left_x;
int8_t left_y;
} JoyState_t;
klass Joystick_
{
offentlig:
Joystick_();
void setState(JoyState_t *joySt);
};
extern Joystick_ Joystick;

Spara filen och du är klar. Återigen, om du har mer en krävande program helt enkelt lägga till kod för att hantera den extra maskinvaran. Den ovan nämnda webbplatsen kommer återigen att användbara.

Se Steg
Relaterade Ämnen

Lägga till Flair i din trädgård med fantastiska planket

Om du letar efter en trä privatlivet staket, staket eller ett staket för att skydda din Pool, barn eller husdjur har du kommit till rätt ställe. Planket kan förvandla något öppet utrymme till en privat, säker och lugn miljö. Här finns flera top mönst...

Lägga till knappar i musen

Jag har spelat FPS spel på min dator ett tag nu och jag fann mig ofta i behov av fler knappar på min mus. Det är därför jag köpte en gång en Logitech G9, utan i vissa spel även knapparna på det är extra 4 de tycktes vara några. Någon gång köpte senar...

Lägga till glam i din tråkiga håraccessoarer med enkel DIYS

Är du uttråkad av plain svart och vitt hårtillbehör? Idag delar jag några lätt DIYs att piffa upp tråkiga hårtillbehör till glamorös och kära. Rhinestone håraccessoarer kan kostar mycket men när du DIY dem är det bara en bråkdel av pengarna. Dessa id...

Att lägga till Freon i din bil Air Condtioning system

varje bildelar butik jag går i dessa dagar har freon till salu. När R-12 var runt var jag tillstånd att köpa och använda den. Jag trodde att det var bra eftersom du kan skadas allvarligt och eller göra $$ av skador på systemet din arbeta på. Jag best...

Göra ett flash filter för att lägga till dramat i dina bilder

med billigt material kan du göra en gel filterhållare att lägga till färg till din flash bilderSteg 1: Skär toppen av av läsk flaska Jab saxen genom sidan av en ren klar plast läsk flaska. Inte stöta din hand. Börja skära av toppen. Prova och göra et...

Lägga till LED i din kostym

mycket enkel LED setup för din kostym!Steg 1: Skaffa lite skräp! jag gjorde en "promenad för the Cure" för bröstcancer medvetenhet. Min mamma var att vinna kampen, så ville jag människor att njuta av i humor och kärlek till livet hon höll genom...

Lägga till Internet-kontroll i Raspberry Pi Robot med Runmyrobot.com

Hur dela din Robot med världen och låta andra människor spela med den med runmyrobot.com. Denna webbplats beta-testning men det bör fungera. Om du har några frågor, låt oss veta genom att publicera på webbplatsen Disqus sida.BTW, måste du ansluta din...

Lägg till flair i din trädgård med återvunnet material

Vi har ingått en ny fas i vårt engagemang för en hållbar miljö genom återvinning. Återvinning av produkter som dörrar & fönster för fäktning handlar om kreativitet, ekonomisk strategi och vår miljö. Här är fantastiska nya idéer för upcycling dina gam...

Lägga till en router tabell med dammsamlare din tabell såg

Detta Instructable visar hur jag ändrade min bärbara tabell såg att ersätta tabellen rätt förlängning med ett gångjärn router bord. Den svängbara tabelldesignen ger enkel åtkomst till ändra routern bitar och justera bitdjup. Avsnittet router är också...

Lägga till POI platser till OSM med din iPhone

att lägga till platser av intresse (POI) platser på öppen gata karta (OSM) projektet är ett bra sätt att öka den digitala representationen av din omgivande samhället! Det är ännu enklare än du tror, eftersom du kan enkelt lägga POI platser med hjälp...

Nybörjarguide till OpenGL: Bygg din egen CAD-program

Min Autodesk Maya elevtillstånd löpt ut nyligen. Så jag gjorde vad någon skulle göra, bygga min egen 3D CAD-programvara (se upp Autodesk).Så jag började skriva mitt program i C++ använder OpenGL, SDL och i ungefär en vecka, detta var resultatet.Några...

Lägga till riktiga strängar i en Guitar Hero controller - OpenChord.org

idag vi kommer att visa dig hur ändrar en Ashley Rock Axe eller liknande "guitar hero controller byggd av en riktig gitarr" till en controller som tillåter dig att spela gitarr hjälte/Rock Band med riktiga strängar och band, så att du kan öva ri...

Lägga till lysdioder i en Nes-kontrollant

Easilly lägga till led i din nes controllerSteg 1: Huvuddelen av det lägga leds till en Nes-kontrollant är helt enkelt allt du behöver är några tråd, lysdioder, sauder, och vissa epoxi eller en annan stark självhäftande.efter öppnandet den nes contro...

Chia Fresca: Lägga till näringsämnen i någon drink

du kan skal ut förladdningar av kontanter att köpa chia utsäde barer och tillskott eller du kan bara lägga till dem i din drink för en läcker och smidig texturerat boost!Det finns en hel del av näringsmässiga fördelar att Chia frön, vet också som löp...

Dölja din rörig bokhylla med ikea paneler

syftet med projektet är att bygga vissa billigt, lätt och flyttbara paneler för att dölja en rörig bokhylla eller använda som en dörr.Detta instructable kan också användas för att bygga en färg från en bra utformad tygNY: Jag publicerade den instruct...

Lägga till pedaler eller ergonomiska knappar på datorns tangentbord

förvandla eSmacks öm knogarna till emacs excellence.tappity-Klonk-tappity-kran.ÖversiktAtt trycka på en knapp på en klaviatur stänger en krets. Lägga till en längre switch parallellt till en viss knapp genom lödning/koppar tejpning tråd inuti tangent...

Lägga till en Pro Sound / Line-utgång till en Super Game Boy

Välkommen. Idag installerar vi kallar mest "pro sound" utdata till en Super Game Boy. Det är en line-utgång som kringgår alla oönskade kretsar buller och ger dig en bättre signal-brus-förhållande (mindre hum, mer bas) och låter dig använda RCA,...

Hur lägga till påskägg cookies till din webbplats!

Har du en webbplats? Gillar du påskägg?Väl sedan detta instructable är för dig!Detta kommer att visa hur du lägger till en överflödig lilla påskägg cookie till din webbplats att människor som är smart nog och surfar kan hitta."En HTTP-cookie är en li...

Ananas kjol (att lägga till mönster till Sketchbook Pro)

om du gillar piña coladas... då kommer du att älska denna läckra ananas kjol. Jag ska visa dig hur enkelt lägga till en färdiga mönster till din linje konst i Sketchbook Pro!Att dröm det, rita det, bära det behöver du:En färdiga mönsterSkiss boka Pro...