Kontrollplatta för datorspel (Arduino som tangentbord)

Berätta om dina pågående projekt.
Användarvisningsbild
MDGrein
Inlägg: 64
Blev medlem: 1 april 2007, 21:06:21
Skype: mdgrein
Ort: Skövde

Kontrollplatta för datorspel (Arduino som tangentbord)

Inlägg av MDGrein »

Hej hej!

Jag har tröskat ner mig i Farming Simulator 2015 och efter cirka 150 timmars speltid kom jag fram till att jag tycker att konceptet med att styra kranar och andra tillhyggen genom att vifta runt med musen samtidigt som man håller ner knapparna i olika kombinationer var tämligen opraktiskt.
Jag kröp således till korset och inhandlade en Xbox One kontroll.

De två analoga stickorna är ljusår bättre än att vifta runt med musen som en tok.
En annan fördel är att jag kan luta stolen fullt bakåt och lira med kontrollen i knät, klart mysigt.

Stor nackdel är dock att det är inte alls lika många knappar på en handkontroll som det är på ett tangentbord och det är tämligen opraktiskt.

Jag fick då den briljanta idén att sparka liv i min gamla Arduino Uno samt en låda med fantastiska knappar från Sanwa.
Konfigurera Arduinon att svara som "hej jag är ett tangentbord" och hårdkoda knapparna spelet använder till diverse inputs.

Easypeasy (nope)!

Nu sitter jag här med en Arduino, två multiplexers (4051), hyfsat fungerande kod och knappar som triggas trots att jag inte är i närheten.
Jag vet att jag saknar motstånd och liknande, förmodligen också ytterligare någon typ av mojäng.

Skulle ni kunna assistera mig i detta predikament?

Krets: https://www.dropbox.com/s/tz5mn40gn2vnyeh/KassKrets.png
Fritzing-fil: https://www.dropbox.com/s/qucj3o7ztnoznl7/KassKrets.fzz

Det faktiska bygget:
https://www.dropbox.com/s/iwytm10dr5qbs12/DSC01760.JPG
https://www.dropbox.com/s/gt71rv02h8flfys/DSC01761.JPG


Väl mött!
//Andreas
EBD
Inlägg: 126
Blev medlem: 10 maj 2006, 18:50:48
Ort: Sundsvall

Re: Kontrollplatta för datorspel (Arduino som tangentbord)

Inlägg av EBD »

Du behöver pulldown-motstånd på knapparna. Ett ~10k motstånd på varje knapp mellan jord och muxingång.

Du skulle också kunna köra digital multiplexing direkt i arduinon utan yttre kretsar, du behöver bara 10 I/O för en 5x5 matris. Samma princip som ett sånt här tangentbord, borde gå att använda samma kod: http://playground.arduino.cc/Main/KeypadTutorial
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Kontrollplatta för datorspel (Arduino som tangentbord)

Inlägg av Micke_s »

Kom dock ihåg att en matris gör det svårt att detektera flera knappar samtidigt
Användarvisningsbild
MDGrein
Inlägg: 64
Blev medlem: 1 april 2007, 21:06:21
Skype: mdgrein
Ort: Skövde

Re: Kontrollplatta för datorspel (Arduino som tangentbord)

Inlägg av MDGrein »

EBD skrev:Du behöver pulldown-motstånd på knapparna. Ett ~10k motstånd på varje knapp mellan jord och muxingång.

Du skulle också kunna köra digital multiplexing direkt i arduinon utan yttre kretsar, du behöver bara 10 I/O för en 5x5 matris. Samma princip som ett sånt här tangentbord, borde gå att använda samma kod: http://playground.arduino.cc/Main/KeypadTutorial
Tackar för info!
Jag förkovrar mig i ämnet pull-down/up borta hos https://learn.sparkfun.com/tutorials/pull-up-resistors

Jag valde aktivt bort att ha en matris då jag (Precis som Micke_s skrev) tänker mig att knappar mycket väl kan vara modifierare för andra knappar.
Flera kan vara nedtryckta samtidigt och jag måste veta vilka.

Tackar för assistansen och återkommer med eventuella framgångar :)
EBD
Inlägg: 126
Blev medlem: 10 maj 2006, 18:50:48
Ort: Sundsvall

Re: Kontrollplatta för datorspel (Arduino som tangentbord)

Inlägg av EBD »

Lycka till! En diod per knapp kan lösa problemet med flera knappar samtidigt i en matris, men din krets kommer nog fungera minst lika bra när du har fått dit motstånden.
Användarvisningsbild
MDGrein
Inlägg: 64
Blev medlem: 1 april 2007, 21:06:21
Skype: mdgrein
Ort: Skövde

Re: Kontrollplatta för datorspel (Arduino som tangentbord)

Inlägg av MDGrein »

Oja, motstånd verkar ha gjort tricket!
Fick dock lite konstigheter precis när brytaren stänger och öppnar men jag löste det genom att knappen måste vara nedtryckt i minst 1 millisekund.
Såvitt jag har kunnat testa har det eliminerat alla spöktryck.

Nackdelen är att om man har maximal otur och trycker ner knappen i 23 millisekunder kanske det inte registreras.
Jag tror att jag kan leva med det :)

Nu skall det flyttas från prototypbräda till experimentkort, återstår att se ifall det fortfarande fungerar efter den rockaden :)

Sedan skall jag försöka övertyga Arduinon om att övertyga datorn om att den är ett tangentbord.
Ska nog inte vara så svårt men men.

Någon gång i framtiden kanske jag bara pratar på comporten och låter någon typ av mjukvara lyssna och sedan skapa tangent-tryckningar.
Nu blir det ju tämligen hårdkodat vilken knapp som är vilken tangent.
Den andra lösningen blir betydligt mer dynamisk och har även möjligheten att ändra vilken knapp som gör vad beroende på vilket program som är aktivt.
Men men, version 2.
Användarvisningsbild
MDGrein
Inlägg: 64
Blev medlem: 1 april 2007, 21:06:21
Skype: mdgrein
Ort: Skövde

Re: Kontrollplatta för datorspel (Arduino som tangentbord)

Inlägg av MDGrein »

Nu har jag skalat sladd och lött hela kvällen / natten och det här blev resultatet.
Brödbrädan
Bild

På experimentkort
Bild

Nu håller jag tummar och tår för att det fortfarande fungerar och att jag inte klantat mig mer än nödvändigt.


Tror även att jag kom på varför det blev spötryck precis vid aktivering / släpp av knapp förut.
Förmodligen låg det restspänning kvar i A2D kretsen och när arduinon gick för fulla muggar hann den kolla nästa knapp och konstaterade att den var nedtryckt.
Uppenbarligen verkar det räcka med 1ms för att eventuell restspänning skall leta sig ur A2D-kretsen på min Uno.
Kanske rotar lite mer i det någon gång, om inte annat finns det förmodligen ett datablad för kretsen man kan förkovra sig i.
Användarvisningsbild
bose
Inlägg: 241
Blev medlem: 20 oktober 2005, 20:48:10
Ort: Blekinge

Re: Kontrollplatta för datorspel (Arduino som tangentbord)

Inlägg av bose »

Kul projekt! Med en arduino Leonardo (med 32u4) processor finns bibliotek som gör att den presenterar sig själv som en HID (tangentbord etc) genom USB porten. Då blir plötsligt ditt bygge plug and play. (Glöm inte kolla logiska spänningsnivåer om du bestämmer dig för den vägen).
Skriv svar