Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  4 1603
K, her er scenarioet:

Vi har en datamaskin med pulsmåler, oculus rift og et skummelt spill som styres med xbox 360 stikke.
For å simulere "deer in the headlights" skal kontrolleren slutte å fungere dersom pulsen til spilleren dropper til et vist nivå over en viss tid.

Men, får å få dette til må jeg koble xbox 360 kontrolleren (ikke trådløs, usb) til et rele som kutter en av ledningene.

Spørsmålet er, hvilken kabel burde jeg kutte?

Tenkte i utgangspunktet på 5v+, men vil helst at ikke kontrolleren skal skru seg av slik at man må skru på kontrolleren.

Kan jeg kutte en av dataledningene? Begge?



På forhånd takk.
Dette fungerer nok ikke som du forestiller deg. USB har 4 ledninger, som vist under på bildet.


  • Pin 1 (+) - Gir 5VDC til USB enheten (Xbox kontrolleren).
  • Pin 2 (D-) - Jording til databus'en
  • Pin 3 (D+) - Positiv leder til databus'en
  • Pin 4 (-) - Jording til 5VDC

Kutter du pin 1 og/eller pin 4 så mister Xbox kontrolleren strøm, og da stopper også dataforbindelsen opp. Kutter du der i mot pin 2 og/eller pin 3 så mister Xbox kontrolleren dataforbindelsen.

USB utnytter seriell kommunikasjon (Universal Serial Bus), det vil si at dataen som overføres mellom Xbox kontrolleren og datamaskinen utføres ved å sende bit etter bit på samme bus. Så hvis du kutter dataledning(ene) så vil datamaskinen miste kommunikasjonen med Xbox kontrolleren, og mest sannsynlig vil Xbox kontrolleren forsvinne fra enhets behandlingen. Uten at jeg kjenner til Xbox kontrollerens protokoll, så tipper jeg den utfører en handshake med datamaskinen hvergang den kobles til.

EDIT: Den enkleste måten å stoppe Xbox kontrolleren fra å fungere, er nok med programmering. Modifisere driveren eller utvikle en programvare som stopper gitte signaler fra å nå frem til spillet.
Sist endret av 0xFF; 15. mars 2016 kl. 19:42.
googlejunkie
Turbolego's Avatar
Trådstarter
Programmering ja... vet ikke engang hvor jeg skulle begynt.

Kan hende det enkleste da er å åpne en xbox 360 kontroller og lodde ledninger til alle knappene slik jeg har gjort før for å hjernestyre nintendo 64/dreamcast via kontrolleren + rele.

Har opplevd at releet overstyrer knappen når det er koblet til, slik at knappen på kontrolleren ikke fungerer.

Bare litt kjedelig å lodde en hel kontroller tho.

Er det kanskje en service elns. som kan stoppes og startes relativt kjapt?
Jeg har ikke gjort noe slikt før, men etter et rask søk, så vil jeg tippe XInput, DirectInput og XUSB er fint sted å starte.

Windows Dev Center - XInput
Windows Dev Center - DirectInput and XUSB Devices

Lodding er et dårlig alternativ. Hva med analog stikkene? De analoge kontrollene er ikke binære, men analoge som navnet tilsier, det vil si at dem har mange verdier tilsvarende oppløsningen på dem. I kode eksemplet til Windows Dev Center, så assigner dem posisjonen til analoge stikkene som en float.

Kode

float LX = state.Gamepad.sThumbLX;
float LY = state.Gamepad.sThumbLY;
EDIT: I såfall må du bytte ut relene med ttransistor kretser. Men uansett så er det vesentlig mye mer arbeid enn å skrive litt kode.
Sist endret av 0xFF; 15. mars 2016 kl. 20:54.
googlejunkie
Turbolego's Avatar
Trådstarter
Niz!

Dersom man kan sette state for posisjonen av knappene og joystickene for en tilkoblet xbox kontroller manuelt, vil dette bli mye enklere enn jeg trodde.