Gameport — Änderungen 3046 → 3438

Zeile 29: Zeile 29:
 
=== Achsen ===
 
=== Achsen ===
 
Um die Achsen auszulesen, muss man erst ein beliebigen Wert in den [[I/O-Port]] schreiben. Dadurch werden alle Achsen-Bits auf 1b gesetzt. Nun muss man die Zeit messen bis das jeweilige Bit wieder 0b wird. Da die Werte von Treiber zu Treiber abweichen ist meistens eine Kalibrierung erforderlich.
 
Um die Achsen auszulesen, muss man erst ein beliebigen Wert in den [[I/O-Port]] schreiben. Dadurch werden alle Achsen-Bits auf 1b gesetzt. Nun muss man die Zeit messen bis das jeweilige Bit wieder 0b wird. Da die Werte von Treiber zu Treiber abweichen ist meistens eine Kalibrierung erforderlich.
 +
 +
=== Kalibrierung ===
 +
Da der Joystick keine linearen Werte zurückgibt ist es sinnvoll nicht nur die Ecken als Bezugspunkte bei der Kalibrierung zu benutzen. Ansonsten würde sich die Mitte in Richtung einer Ecke verschieben. Man muss also auch die Mitte als Bezugspunkt nehmen. Jenachdem ob der eingelesene Wert über der Mitte oder unter der Mitte liegt, wird dann ein anderer Skalierungsfaktor benutzt.
 +
 +
Es ist außerdem sinnvoll in der Mitte eine kleine Deadzone einzurichten, bei der dann sofort der Mittelwert zurückgegeben wird, da viele Joysticks beim Zurückschnappen nicht genau in der Mitte halten.