Idéer om växelspaks system till PC, (ratt&pedaler)!
Idéer om växelspaks system till PC, (ratt&pedaler)!
Hej!
Jag har köpt mig en ratt ( Microsoft Sidewinder Force feedback ) för att använda till lite bil simulatorer. Men den har enbart tiptronic(flappy pedal) växel. Så då har jag börjat fundera på hur jag ska kunna bygga en egen "växellåda" till den. Ska byta ratten mot en riktig rally ratt också. Men alltså, växellådan, några punkter som beskriver lite:
- Det ska vara en 6 växlad H-typ låda, alltså som då dom flesta vanliga bilarna.
- Den ska kopplas in över dom två växelströmbrytarna(tiptronics) som sitter på ratten redan, då behöver jag ju inte oroa mig över att dom inte ska länka med datorn, bara att löda kablar till växellådan där strömbrytarna sitter, om ni förstår.
En liten skiss bara på hur växellådan ska se ut för dom som inte förstår:
1 3 5
|_|_|_
| | | |
2 4 6 R
Och då är mitt problem, eftersom att datorn bara ska ta in två knappar, "växelupp/växelner" så måste jag ju ha nånting som kontrollerar att om jag har ettan, och sen lägger i tvåan, så ska den växla upp, och om jag sen lägger i trean, så ska den växla upp, men lägger jag sen i tvåan igen så ska den växla ner. För nästan alla spel kan ju inte ha en knapp för varje växel utan har en för upp och en för ner.. Det är bara backen som blir enkel för den kör man som konstant "växelner"..
Dock, om man gör såhär, så blir ju problemet att kommer man och åker på 5:an, bromsar in för en sväng, trycker i kopplingen och växlar ner till 3:an, så kommer ju datorn att fatta det som en nerväxling, inte två. Och då kommer spelet lägga i 4:an. Detta är dock något som man kan leva med antar jag, man får lära sig att växla ner växel för växel, dock lite jobbigt om man spinner runt och måste ner till ettan från sexan och ligger i ett race..
Jag kommer alltså att ha 7st strömbrytare vid varje växelläge, och ligger jag på växel 4:a ..så måste jag ha något som känner av att jag ligger på 4:an, och som gör om alla lägre växelbrytare till "växelner" och 5:an och 6:an till "växelupp"..
Går detta att lösa utan en uC? För jag har ingen erfarenhet av microprocessorer. Ska börja med det men det vore skönt om det gick att lösa utan!
Tror jag fick med allt, mycket blev det iallafall. Bara att fråga om något är oklart.
Tack för mig, mvh Anton Danielsson
Jag har köpt mig en ratt ( Microsoft Sidewinder Force feedback ) för att använda till lite bil simulatorer. Men den har enbart tiptronic(flappy pedal) växel. Så då har jag börjat fundera på hur jag ska kunna bygga en egen "växellåda" till den. Ska byta ratten mot en riktig rally ratt också. Men alltså, växellådan, några punkter som beskriver lite:
- Det ska vara en 6 växlad H-typ låda, alltså som då dom flesta vanliga bilarna.
- Den ska kopplas in över dom två växelströmbrytarna(tiptronics) som sitter på ratten redan, då behöver jag ju inte oroa mig över att dom inte ska länka med datorn, bara att löda kablar till växellådan där strömbrytarna sitter, om ni förstår.
En liten skiss bara på hur växellådan ska se ut för dom som inte förstår:
1 3 5
|_|_|_
| | | |
2 4 6 R
Och då är mitt problem, eftersom att datorn bara ska ta in två knappar, "växelupp/växelner" så måste jag ju ha nånting som kontrollerar att om jag har ettan, och sen lägger i tvåan, så ska den växla upp, och om jag sen lägger i trean, så ska den växla upp, men lägger jag sen i tvåan igen så ska den växla ner. För nästan alla spel kan ju inte ha en knapp för varje växel utan har en för upp och en för ner.. Det är bara backen som blir enkel för den kör man som konstant "växelner"..
Dock, om man gör såhär, så blir ju problemet att kommer man och åker på 5:an, bromsar in för en sväng, trycker i kopplingen och växlar ner till 3:an, så kommer ju datorn att fatta det som en nerväxling, inte två. Och då kommer spelet lägga i 4:an. Detta är dock något som man kan leva med antar jag, man får lära sig att växla ner växel för växel, dock lite jobbigt om man spinner runt och måste ner till ettan från sexan och ligger i ett race..
Jag kommer alltså att ha 7st strömbrytare vid varje växelläge, och ligger jag på växel 4:a ..så måste jag ha något som känner av att jag ligger på 4:an, och som gör om alla lägre växelbrytare till "växelner" och 5:an och 6:an till "växelupp"..
Går detta att lösa utan en uC? För jag har ingen erfarenhet av microprocessorer. Ska börja med det men det vore skönt om det gick att lösa utan!
Tror jag fick med allt, mycket blev det iallafall. Bara att fråga om något är oklart.
Tack för mig, mvh Anton Danielsson
Alltså... det finns ju en väg UTAN µC.
Om man nu tänkar att du har en upp/ner-räknare som kan räkna 1-6. När den har räknat till rätt växel (dekoder på såklart) stoppar den med att räkna.
Samtidig kopplar man en priority-encoder på växelbrytarna, detta ger då en binär ställning om vilken växel som är vald. Dessa 2 tal jämför man då i en sån krets som kan ge "A>B, A=B, A<B" och styr upp/ner-pulser med den.
Det blir en hel del kretsar, ca: 6-8 kretsar i CMOS/TTL logik mot 1 st t.ex. PIC16F612A på 18 pinnar. Båda lösningar bör (tycker jag) ha optokopplare utgång till växelknapper vilket är lika för båda lösningarna.
Jag vet ju vilken lösning jag hade vald.....
Om man nu tänkar att du har en upp/ner-räknare som kan räkna 1-6. När den har räknat till rätt växel (dekoder på såklart) stoppar den med att räkna.
Samtidig kopplar man en priority-encoder på växelbrytarna, detta ger då en binär ställning om vilken växel som är vald. Dessa 2 tal jämför man då i en sån krets som kan ge "A>B, A=B, A<B" och styr upp/ner-pulser med den.
Det blir en hel del kretsar, ca: 6-8 kretsar i CMOS/TTL logik mot 1 st t.ex. PIC16F612A på 18 pinnar. Båda lösningar bör (tycker jag) ha optokopplare utgång till växelknapper vilket är lika för båda lösningarna.
Jag vet ju vilken lösning jag hade vald.....
Problemet är väl att spaken inte vet villken växel som är i från början i spelet? Säg att du startar spelet och har spaken i femman. Spelet tror att du är i neutral (eller kanske ettan?) så när du då slänger i ettan på spaken växlas det i spelet ner fyra steg å du hamnar i backen.
Eller är jag ute å cyklar? Men om man ser till att ha spaken i rätt läge varje gång man startar ett race borde det funka.
Dock har ju alla riktiga rally- och F1-bilar idag "tiptronic"-lådor så det är ju mest realistiskt egentligen...
Eller är jag ute å cyklar? Men om man ser till att ha spaken i rätt läge varje gång man startar ett race borde det funka.
Dock har ju alla riktiga rally- och F1-bilar idag "tiptronic"-lådor så det är ju mest realistiskt egentligen...
- JimmyAndersson
- Inlägg: 26586
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
Okej, jag ger mig
jag får köra med en uC.
Då borde väl koden bli typ såhär, fast i riktigt språk då.
:::
->> X = goto/gå till kapitel X
-> X = utför uppgift X
Skannar efter nästa växling = Då skannar den av alla strömbrytare efter vilken som trycks härnäst
:::
- Växel 1 -> Skannar efter nästa växling
|->> Växel 1_2 -> Växla upp 1 ->> Växel2
|->> Växel 1_3 -> Växla upp 2 ->> Växel3
|->> Växel 1_4 -> Växla upp 3 ->> Växel4
|->> Växel 1_5 -> Växla upp 4 ->> Växel5
|->> Växel 1_6 -> Växla upp 5 ->> Växel6
|->> Växel 1_R -> Växla ner 2 ->> VäxelR
- Växel 2 -> Skannar efter nästa växling
|->> Växel 2_1 -> Växla ner 1 ->> Växel 1
|->> Växel 2_3 -> Växla upp 1 ->> Växel 3
|->> Växel 2_4 -> Växla upp 2 ->> Växel 4
|->> Växel 2_5 -> Växla upp 3 ->> Växel 5
|->> Växel 2_6 -> Växla upp 4 ->> Växel 6
|->> Växel 2_R -> Växla ner 3 ->> Växel R
- Växel 3 -> Skannar efter nästa växling
|->> Växel 3_1 -> Växla ner 2 ->> Växel 1
|->> Växel 3_2 -> Växla ner 1 ->> Växel 2
|->> Växel 3_4 -> Växla upp 1 ->> Växel 4
|->> Växel 3_5 -> Växla upp 2 ->> Växel 5
|->> Växel 3_6 -> Växla upp 3 ->> Växel 6
|->> Växel 3_R -> Växla ner 4 ->> Växel R
- Växel 4 -> Skannar efter nästa växling
|->> Växel 4_1 -> Växla ner 3 ->> Växel 1
|->> Växel 4_2 -> Växla ner 2 ->> Växel 2
|->> Växel 4_3 -> Växla ner 1 ->> Växel 3
|->> Växel 4_5 -> Växla upp 1 ->> Växel 5
|->> Växel 4_6 -> Växla upp 2 ->> Växel 6
|->> Växel 4_R -> Växla ner 5 ->> Växel 7
- Växel 5 -> Skannar efter nästa växling
|->> Växel 5_1 -> Växla ner 4 ->> Växel 1
|->> Växel 5_2 -> Växla ner 3 ->> Växel 2
|->> Växel 5_3 -> Växla ner 2 ->> Växel 3
|->> Växel 5_4 -> Växla ner 1 ->> Växel 4
|->> Växel 5_6 -> Växla upp 1 ->> Växel 6
|->> Växel 5_R -> Växla ner 6 ->> Växel R
- Växel 6 -> Skannar efter nästa växling
|->> Växel 6_1 -> Växla ner 5 ->> Växel 1
|->> Växel 6_2 -> Växla ner 4 ->> Växel 2
|->> Växel 6_3 -> Växla ner 3 ->> Växel 3
|->> Växel 6_4 -> Växla ner 2 ->> Växel 4
|->> Växel 6_5 -> Växla ner 1 ->> Växel 5
|->> Växel 6_R -> Växla ner 7 ->> Växel R
- Växel R -> Skannar efter nästa växling
|->> Växel R_1 -> Växla upp 2 ->> Växel 1
|->> Växel R_2 -> Växla upp 3 ->> Växel 2
|->> Växel R_3 -> Växla upp 4 ->> Växel 3
|->> Växel R_4 -> Växla upp 5 ->> Växel 4
|->> Växel R_5 -> Växla upp 6 ->> Växel 5
|->> Växel R_6 -> Växla upp 7 ->> Växel 6
:::
Ni undrar nog varför den växlar en gång för mycket mellan 1-2-3-4-5-6 och R. det är för att på dom flesta spel så ligger det friläge mellan, alltså R-N-1-2... Så då måste man ju växla förbi det. Därav den extra växlingen..
Och eftersom jag gör såhär med att inte växla på själva "Växeln" utan i underkatalogerna, så kan jag starta spelet, och kolla vilken växel jag ligger på, troligtvis ettan, då växlar jag bara upp till ettan med spaken så börjar den skanna på ettans växel efter nästa växling.. skulle jag börja av nån konstig anledning på tvåan så växlar jag bara dit så börjar den skanna där.
Synpunkter? Går det att lösa med mindre kod? Och hur mycket kodning blir detta i tex assambler eller vilket språk jag nu ska köra? Även tips på det.

Då borde väl koden bli typ såhär, fast i riktigt språk då.
:::
->> X = goto/gå till kapitel X
-> X = utför uppgift X
Skannar efter nästa växling = Då skannar den av alla strömbrytare efter vilken som trycks härnäst
:::
- Växel 1 -> Skannar efter nästa växling
|->> Växel 1_2 -> Växla upp 1 ->> Växel2
|->> Växel 1_3 -> Växla upp 2 ->> Växel3
|->> Växel 1_4 -> Växla upp 3 ->> Växel4
|->> Växel 1_5 -> Växla upp 4 ->> Växel5
|->> Växel 1_6 -> Växla upp 5 ->> Växel6
|->> Växel 1_R -> Växla ner 2 ->> VäxelR
- Växel 2 -> Skannar efter nästa växling
|->> Växel 2_1 -> Växla ner 1 ->> Växel 1
|->> Växel 2_3 -> Växla upp 1 ->> Växel 3
|->> Växel 2_4 -> Växla upp 2 ->> Växel 4
|->> Växel 2_5 -> Växla upp 3 ->> Växel 5
|->> Växel 2_6 -> Växla upp 4 ->> Växel 6
|->> Växel 2_R -> Växla ner 3 ->> Växel R
- Växel 3 -> Skannar efter nästa växling
|->> Växel 3_1 -> Växla ner 2 ->> Växel 1
|->> Växel 3_2 -> Växla ner 1 ->> Växel 2
|->> Växel 3_4 -> Växla upp 1 ->> Växel 4
|->> Växel 3_5 -> Växla upp 2 ->> Växel 5
|->> Växel 3_6 -> Växla upp 3 ->> Växel 6
|->> Växel 3_R -> Växla ner 4 ->> Växel R
- Växel 4 -> Skannar efter nästa växling
|->> Växel 4_1 -> Växla ner 3 ->> Växel 1
|->> Växel 4_2 -> Växla ner 2 ->> Växel 2
|->> Växel 4_3 -> Växla ner 1 ->> Växel 3
|->> Växel 4_5 -> Växla upp 1 ->> Växel 5
|->> Växel 4_6 -> Växla upp 2 ->> Växel 6
|->> Växel 4_R -> Växla ner 5 ->> Växel 7
- Växel 5 -> Skannar efter nästa växling
|->> Växel 5_1 -> Växla ner 4 ->> Växel 1
|->> Växel 5_2 -> Växla ner 3 ->> Växel 2
|->> Växel 5_3 -> Växla ner 2 ->> Växel 3
|->> Växel 5_4 -> Växla ner 1 ->> Växel 4
|->> Växel 5_6 -> Växla upp 1 ->> Växel 6
|->> Växel 5_R -> Växla ner 6 ->> Växel R
- Växel 6 -> Skannar efter nästa växling
|->> Växel 6_1 -> Växla ner 5 ->> Växel 1
|->> Växel 6_2 -> Växla ner 4 ->> Växel 2
|->> Växel 6_3 -> Växla ner 3 ->> Växel 3
|->> Växel 6_4 -> Växla ner 2 ->> Växel 4
|->> Växel 6_5 -> Växla ner 1 ->> Växel 5
|->> Växel 6_R -> Växla ner 7 ->> Växel R
- Växel R -> Skannar efter nästa växling
|->> Växel R_1 -> Växla upp 2 ->> Växel 1
|->> Växel R_2 -> Växla upp 3 ->> Växel 2
|->> Växel R_3 -> Växla upp 4 ->> Växel 3
|->> Växel R_4 -> Växla upp 5 ->> Växel 4
|->> Växel R_5 -> Växla upp 6 ->> Växel 5
|->> Växel R_6 -> Växla upp 7 ->> Växel 6
:::
Ni undrar nog varför den växlar en gång för mycket mellan 1-2-3-4-5-6 och R. det är för att på dom flesta spel så ligger det friläge mellan, alltså R-N-1-2... Så då måste man ju växla förbi det. Därav den extra växlingen..
Och eftersom jag gör såhär med att inte växla på själva "Växeln" utan i underkatalogerna, så kan jag starta spelet, och kolla vilken växel jag ligger på, troligtvis ettan, då växlar jag bara upp till ettan med spaken så börjar den skanna på ettans växel efter nästa växling.. skulle jag börja av nån konstig anledning på tvåan så växlar jag bara dit så börjar den skanna där.
Synpunkter? Går det att lösa med mindre kod? Och hur mycket kodning blir detta i tex assambler eller vilket språk jag nu ska köra? Även tips på det.
Det ser ut som du beskrivet en statusmaskin ungefär, och så kan man göra.
Men annars räcker det väl om du har två variabler "oldgear" och "newgear", och gör något sånt här:
Loopa hela tiden:
Om newgear > oldgear => växla upp och räkna upp oldgear
Annars Om newgear < oldgear => växla ner och räkna ner oldgear
Annars kolla alla switchar och sätt newgear = läget som spaken är i
Sen tillkommer lite detaljer för att initiera allt och skicka lagom långa pulser och lite annat finlir.
Men annars räcker det väl om du har två variabler "oldgear" och "newgear", och gör något sånt här:
Loopa hela tiden:
Om newgear > oldgear => växla upp och räkna upp oldgear
Annars Om newgear < oldgear => växla ner och räkna ner oldgear
Annars kolla alla switchar och sätt newgear = läget som spaken är i
Sen tillkommer lite detaljer för att initiera allt och skicka lagom långa pulser och lite annat finlir.
Hmm.. Jag förstår inte riktigt hur man ska göra variablerna och hur ska man läsa av? läsa av portarna?, vilka som är höga och låga precis som alltid? .. känns som att ditt är mer acancerat..fast smidigare bara man förstår. Förstår principen att om newgear är högre än oldgear så ska den växla upp och räkna upp oldgear numret men alltså, jag förstår inte hur den ska kunna känna av att den växlar mellan ettan och backen typ, då den måste växla en extra gång.. sen måste man väl göra så att den känner av HUR mycket större newgear är och anpassa växlingarna därefter!?
får ursäkta mina okunskaper inom området!
får ursäkta mina okunskaper inom området!
Ge alla växlarna nummer, typ 0 = back, 1 = neutral, 2 = ettan osv
Varje gång oldgear är mindre än newgear räknas den upp med 1, så om du har bytt från trean till femman räknas den upp två gånger (4 till 5, sen 5 till 6 med min numrering). Varje gång den räknas upp med 1 så skickas ett "tryck" till datorn.
Du läser av porten med switcharna på, funderar ut vilken switch som är intryckt och sätter newgear till det tal som motsvarar den växel som du tydligen valt.
Varje gång oldgear är mindre än newgear räknas den upp med 1, så om du har bytt från trean till femman räknas den upp två gånger (4 till 5, sen 5 till 6 med min numrering). Varje gång den räknas upp med 1 så skickas ett "tryck" till datorn.
Du läser av porten med switcharna på, funderar ut vilken switch som är intryckt och sätter newgear till det tal som motsvarar den växel som du tydligen valt.
Dåså, då klarnade det lite. tackar, om vi nu övergår lite till hårdvara osv. Vilken uC ska jag köra? Jag har faktiskt några picar hemma, har ju somsagt tänkt börja men aldrig riktigt fått tummen ur, fastnade lite då jag skulle välja språk och programmerare!.
Dom picarna jag har är typ nån 16F628A och 877A. Skulle nån av dom fungera bra? Sen har jag kollat på Assambler, hur svårt är det att lära sig det? kommer det ta 1år innan jag kan bygga min växellåda om jag ska lära mig det först?
Mvh Anton Danielsson
Dom picarna jag har är typ nån 16F628A och 877A. Skulle nån av dom fungera bra? Sen har jag kollat på Assambler, hur svårt är det att lära sig det? kommer det ta 1år innan jag kan bygga min växellåda om jag ska lära mig det först?
Mvh Anton Danielsson