Wie funktioniert eine Maus?

Ziel: Wir wollen herausfinden, wie eine Maus erkennt, in welche Richtung und wie weit sie bewegt wird. An einem zu bauenden Demonstrationsmodell soll die Arbeitsweise gut zu erkennen sein. Die zugehörigen Programme wollen wir ebenfalls entwickeln.

Wie bekommt man Informationen in den Computer?

Der Druckerport verfügt über Anschlüsse, die Informationen an den Computer schicken können. Ein Drucker sendet schließlich Informationen wie Bereitschaft, Papier alle, keine Tinte, Papierstau usw.. Diese kann man für seine Zwecke nutzen.
Legt man an solch einen Eingang 5V an, so erkennt der Computer eine logische 1, bei 0V eine logische 0.

Ein einfache Lichtschranke

Schaltplan




Die Abbildung zeigt den Schaltplan für eine einfache Lichtschrankenanordnung. Ganz links wird eine Leuchtdiode über einen Vorwiderstand angesprochen. Parallel dazu steht ein Fototransistor zum Empfang des Lichtes bereit.
Fällt Licht auf den Fototransistor, so stellt er eine leitende Verbindung zur Masse her. Damit liegen 0V am Eingang des Negators an, wodurch 5V am Eingang des Computers anliegen. Umgekehrt unterbricht der Transistor bei fehlendem Lichteinfall und am Eingang des Computers liegen 5V an.
Der Negator in der Schaltung wird aus drei Gründen eingebaut.
  1. Der Schaltkreis CD 4093 ist sehr preiswert. (max 1,-DM)
  2. Er enthält 4 dieser NAND- Gatter, wodurch mit einem Schaltkreis gleich 4 Lichtschranken realisiert werden können.
  3. Er hat getriggerte Eingänge. Selbst, wenn am Fototransistor irgendein Dämmerlicht einfällt, also ein Wert zwischen 0 und 5V am Eingang erscheint, so liefern die Ausgänge immer saubere logische Werte.
Programm 1
Dieses Programm zeigt, wie man die Reaktion des Computers auf Veränderungen an der Lichtschranke abfragen kann.
CLS

WHILE INKEY$=""
      Eingang=INP(&H379)
      LOCATE 10,40
      PRINT Eingang
WEND
         
Programm 2
Dieses Programm erkennt, wie oft die Lichtschranke unterbrochen wurde. Zuerst wird der Eingang eingelesen. Danach steckt das Programm in einer Schleife fest, so lange der Eingangswert sich nicht ändert und keine Taste gedrückt wurde.
CLS
Zaehler=0

WHILE INKEY$=""

      Eingang=INP(&H379)

      WHILE (Eingang=INP(&H379)) AND (INKEY$="")
      WEND

      Zaehler=Zaehler+1
      LOCATE 10,40
      PRINT Zaehler

WEND
    

In welche Richtung rollt die Maus?

Die Kugel liegt auf der Tischplatte. Wird die Maus bewegt, so wird die Lichtschranke durch das Zahnrad im ständigen Wechsel unterbrochen und wieder freigegeben. Diese Wechsel lassen sich beispielsweise mit dem Programm 2 zählen. Hieraus lässt sich dann bestimmen, wie weit die Maus bewegt wurde.
Problem
Da die Lichtschranke nur Einsen und Nullen im Wechsel ausgibt, ist nicht erkennbar, ob die Maus nach links oder rechts gerollt wurde.
Mit 2 Lichtschranken lassen sich bereits 4 Zustände unterscheiden.
beide LS frei
nur die obere LS frei
nur die untere LS frei
beide LS unterbrochen
Das Lichtschrankenpaar liefert also 4 verschiedene Bitfolgen

11 01 00 10

Jetzt ist die Drehrichtung erkennbar:
Angenommen der aktuelle Zustand ist 01. Folgt als nächster Zustand 00, dann dreht die Maus nach rechts, sonst nach links.
Ein Lichtschrankenpaar haben wir bereits aufgebaut. Im nächsten Jahr wollen wir die Maus dann bauen und versuchen diese mit Programmen abzufragen.
Zum Testen hat Marty Winkler das killme.zip mit QBAsic geschrieben.

zurück