Verwendung des Berührungssensors

Der Berührungssensor erkennt, ob die Taste an der Vorderseite des Sensors gedrückt ist. Du kannst den Berührungssensor bspw. verwenden, um zu erkennen, ob der Roboter gegen etwas gefahren ist. Du könntest aber auch mit einem Finger auf den Berührungssensor drücken, um eine Aktion auszulösen.
Der Berührungssensor kann anzeigen, ob er gerade gedrückt wird (oder nicht). Er kann jedoch nicht messen wie weit bzw. wie kräftig er gedrückt wird. Der Berührungssensor gibt Logische Werte („Wahr“ oder „Falsch“) aus. Die Stellung der Berührungssensor-Taste wird als ihr Zustand bezeichnet. Der Zustand lautet „Wahr“, wenn die Taste gerade gedrückt wird, und „Falsch“, wenn sie gerade nicht gedrückt wird (ausgelassen wurde).

Der Berührungssensor kann auch verfolgen, ob die Taste in der Vergangenheit gedrückt und dann wieder ausgelassen wurde. Dieser Zustand wird als „Angestoßen“ bezeichnet und eignet sich bspw., um die Betätigung der Taste mit einem Finger zu erkennen, Näheres erfährt du unter „Den Zustand „Angestoßen“ verstehen“.
Vom Berührungssensor gelieferte Daten
Der Berührungssensor kann die folgenden Daten ausgeben:
DatenTypHinweise
Zustand Logische Werte„Wahr“, wenn die Taste gedrückt wird, „Falsch“, wenn die Taste nicht gedrückt wird.
Gedrückt Logische Werte„Wahr“, wenn die Taste gedrückt wird, „Falsch“, wenn die Taste nicht gedrückt wird (mit dem Zustand identisch).
Ausgelassen Logische Werte„Falsch“, wenn die Taste gedrückt wird, „Wahr“, wenn die Taste nicht gedrückt wird (das Gegenteil des Zustands).
Angestoßen Logische Werte„Wahr“, wenn die Taste in der Vergangenheit gedrückt und dann wieder ausgelassen wurde. Das nächste Eintreten des Zustands „Angestoßen“ erfordert dann ein erneutes Drücken und Auslassen der Taste.
Beispiele für die Verwendung des Zustands „Gedrückt“
Nachstehend findest du einige Beispiele, wie du die Info „Gedrückt“ in einem Programm verwenden kannst.
Beispiel 1: Fahre, bis ein Berührungssensor gedrückt wird.
Dieses Programm lässt einen Roboter in gerader Linie vorwärts fahren, bis ein Berührungssensor gedrückt wird, woraufhin der Roboter gestoppt wird. In diesem Programm wird ein Warte(n)-Block im Modus „Berührungssensor – Vergleichen – Berührung“ verwendet, um zu testen, ob die Taste gerade „Gedrückt“ wird.
Tipps und Tricks
Denk daran, den Bewegungslenkungs-Block im Modus „An“ zu verwenden, wenn du den Roboter fahren lassen möchtest, während er auf den Messwert eines Sensors wartet.
Beispiel 2: Einen Motor jedes Mal laufen lassen, wenn ein Berührungssensor gedrückt gehalten wird (Methode 1)
Dieses Programm lässt einen Motor jedes Mal laufen, wenn der Berührungssensor gedrückt gehalten wird. Der Motor wird jedes Mal gestoppt, wenn der Berührungssensor wieder ausgelassen wird. In diesem Programm wird ein Schalter-Block im Modus „Berührungssensor – Vergleichen – Berührung“ verwendet, um zu testen, ob die Taste gerade „Gedrückt“ wird. Das Ergebnis dieses Tests wird benutzt, um zu entscheiden, ob der Motor an- oder ausgeschaltet wird. Der Test wird in einer Schleife endlos wiederholt.
Beispiel 3: Lass die Stein-Statusleuchte jedes Mal pulsieren, wenn der Berührungssensor gedrückt gehalten wird.
Dieses Programm lässt die Stein-Statusleuchte jedes Mal orange pulsieren, wenn der Berührungssensor gedrückt gehalten wird. Der Berührungssensor-Block wird im Messmodus verwendet, um den Zustand des Berührungssensors abzurufen. Der Ergebnis wird per Logischer Datenleitung in die Eingabe „Pulsieren“ im Stein-Tasten-Block übertragen.
Beispiele für die Verwendung des Zustands „Ausgelassen“
Nachstehend findest du einige Beispiele, wie du die Info „Ausgelassen“ in einem Programm verwenden kannst.
Beispiel 4: Bei jedem Drücken des Berührungssensors einen Piepton abgeben
Dieses Programm lässt jedes Mal einen kurzen Piepton erklingen, wenn der Berührungssensor gedrückt wird. Bei jedem Drücken erklingt nur ein Piepton. In diesem Programm wird ein Warte(n)-Block im Modus „Berührungssensor – Vergleichen – Berührung“ verwendet, um zu testen, ob die Taste „Gedrückt“ wird, und dann ein weiterer Warte(n)-Block, um darauf zu warten, dass die Taste „Ausgelassen“ wird, bevor die Schleife fortgesetzt wird.
Tipps und Tricks
Wenn du den Warte-Block, mit dem das Auslassen der Taste abgewartet wird, aus diesem Programm löschst, wirst du feststellen, dass der Piepton wiederholt wird, solange der Berührungssensor gedrückt gehalten wird. Probiere es einfach mal aus!
Beispiel 5: Einen Motor jedes Mal laufen lassen, wenn ein Berührungssensor gedrückt gehalten wird (Methode 2)
Dieses Programm lässt einen Motor jedes Mal laufen, wenn der Berührungssensor gedrückt gehalten wird. Der Motor wird jedes Mal gestoppt, wenn der Berührungssensor wieder ausgelassen wird. In diesem Programm wird ein Warte(n)-Block im Modus „Berührungssensor – Vergleichen – Berührung“ verwendet, um darauf zu warten, dass die Taste „Gedrückt“ wird, um den Motor zu starten. Dann wird ein weiterer Warte(n)-Block verwendet, um darauf zu warten, dass die Taste „Ausgelassen“ wird, um den Motor zu stoppen. Dieser Prozess wird in einer Schleife wiederholt.
Tipps und Tricks
Dieses Programm bewirkt dasselbe wie das oben beschriebene Beispiel 2 – allerdings auf andere Weise (mit einer anderen Methode).
Den Zustand „Angestoßen“ verstehen
Der Berührungssensor meldet dir jedoch nicht nur, ob seine Taste derzeit gedrückt oder ausgelassen ist, sondern verfolgt auch, ob sie in der Vergangenheit gedrückt und wieder ausgelassen – also „Angestoßen“ – wurde. So lässt sich leicht feststellen, ob die Taste eines Berührungssensors wie ein Druckknopf betätigt wurde, ohne ständig prüfen zu müssen, ob sie gedrückt wurde, und dann darauf zu warten, dass sie wieder ausgelassen wird.

Nachdem ein Berührungssensor angezeigt hat, dass er „Angestoßen“ wurde, zeigt er diesen Zustand erst wieder an, wenn der Berührungssensor erneut gedrückt und wieder ausgelassen wurde. Auf diese Weise lässt sich leicht sicherstellen, dass bspw. jedes Drücken der Taste einer nur einmal ausgeführten Aktion entspricht.

Die nachstehende Tabelle zeigt ein Beispiel, bei dem ein Berührungssensor zweimal gedrückt und ausgelassen wird, was als eine Reihe von Schritten dargestellt wird. Die Tabelle zeigt das Ergebnis eines Programms, das nach jeder Aktion testet, ob die Zustände „Gedrückt“, „Ausgelassen“ und „Angestoßen“ vorliegen.
SchrittAktionGedrücktAusgelassenAngestoßen
1 Taste am Anfang ausgelassenFalschWahrFalsch
2 Taste wird gedrückt gehaltenWahrFalschFalsch
3 Taste wurde ausgelassenFalschWahrWahr
4 Taste ist immer noch ausgelassen und das Programm testet den Berührungssensor erneutFalschWahrFalsch
5 Taste wird ein zweites Mal gedrücktWahrFalschFalsch
6 Taste wird gedrückt gehalten und das Programm testet den Berührungssensor erneutWahrFalschFalsch
7 Taste wurde ausgelassenFalschWahrWahr
8 Taste ist immer noch ausgelassen und das Programm testet den Berührungssensor erneutFalschWahrFalsch
Beachte, dass der Berührungssensor bei jedem entsprechenden Test des Programms den Zustand „Gedrückt“ weiterhin anzeigt, wenn die Taste gedrückt gehalten wird. Wenn die Taste jedoch ausgelassen wird, zeigt der Berührungssensor nur beim ersten Test des Programms auf den Zustand „Angestoßen“ an, dass der Berührungssensor „Angestoßen“ wurde. Der Berührungssensor zeigt den Zustand „Angestoßen“ erst wieder an, wenn die Taste erneut gedrückt und wieder ausgelassen wurde.
Beispiele für die Verwendung des Zustands „Angestoßen“
Nachstehend findest du einige Beispiele, wie du die Info „Angestoßen“ in einem Programm verwenden kannst.
Beispiel 6: Ändere die Anzeige, wenn der Berührungssensor gedrückt wird.
Dieses Programm lässt den EV3-Stein auf dem Display die Werte „Zero“ (null), dann „One“ (Eins) und dann „Two“ (Zwei) anzeigen. Die Anzeige ändert sich jedes Mal, wenn der Berührungssensor angestoßen (gedrückt und wieder ausgelassen) wird.
Tipps und Tricks
Wenn du die Warte-Blocks in diesem Programm so änderst, dass sie auf den Zustand „Gedrückt“ anstatt auf den Zustand „Angestoßen“ testen, wirst du feststellen, dass die Anzeige von „Zero“ (Null) direkt zu „Two“ (Zwei) wechselt und „One“ (Eins) einfach überspringt. Probiere es einfach mal aus! Das liegt daran, dass die Anzeige-Blöcke so schnell ausgeführt werden, dass beim zweiten Warten auf den Zustand „Gedrückt“ die Taste noch immer gedrückt ist (weil du deinen Finger nach dem ersten Drücken noch gar nicht von der Taste nehmen konntest). Deshalb wird das zweite Warten (der zweite Warte-Block) sofort beendet. Beim Testen auf den Zustand „Angestoßen“ ist nach jedem Drücken jeweils nur ein Test erfolgreich.
Beispiel 7: Fahre ein Muster, bis der Berührungssensor gedrückt wird.
Dieses Programm lässt einen Roboter immer wieder geradeaus fahren und dann abbiegen, bis ein Berührungssensor gedrückt wird, der als Stopp-Taste fungiert. Nachdem der Berührungssensor gedrückt wurde, stoppt der Roboter nach dem nächsten Abbiegen. In dem Programm wird eine Schleife im Berührungssensormodus verwendet, um das Fahrmuster zu wiederholen, bis der Berührungssensor „Angestoßen“ (gedrückt und dann wieder ausgelassen) wird.
Tipps und Tricks
Wenn du in diesem Programm auf den Zustand „Gedrückt“ anstatt auf den Zustand „Angestoßen“ testen lässt, wirst du feststellen, dass der Roboter durch Drücken des Berührungssensors in der Regel nicht gestoppt wird. Probiere es einfach mal aus! Das liegt daran, dass die Schleife den Berührungssensor nach der Durchführung der beiden Bewegungs-Blöcke nur kurz testet. Wenn du den Berührungssensor drückst und wieder auslässt, während die Bewegungs-Blöcke ausgeführt werden, dann wird der Zustand „Gedrückt“ nicht angezeigt. Beim Test auf den Zustand „Angestoßen“ merkt sich der Berührungssensor, dass er in der Vergangenheit gedrückt und ausgelassen wurde.
Blöcke und Modi des Berührungssensors
Die nachstehende Tabelle enthält alle Programmierblöcke und Modi, die du zusammen mit dem Berührungssensor verwenden kannst.
BlockModusVerwendungszweck
WartenBerührungssensor – VergleichenWarten, dass der Berührungssensor „Gedrückt“, „Ausgelassen“ oder „Angestoßen“ wird.
WartenBerührungssensor – ÄndernWarten, dass sich der Zustand des Berührungssensors ändert.
SchleifeBerührungssensorEine Sequenz von Blöcken wiederholen, bis der Berührungssensor „Gedrückt“, „Ausgelassen“ oder „Angestoßen“ wird.
SchalterBerührungssensorJe nachdem, ob der Berührungssensor „Gedrückt“ wird (oder nicht), „Ausgelassen“ wird (oder nicht) bzw. „Angestoßen“ wird (oder nicht), eine von zwei Blocksequenzen auswählen.
BerührungssensorMessenDen aktuellen Zustand des Berührungssensors („Gedrückt“ oder nicht) über eine Logische Datenleitung abrufen.
BerührungssensorVergleichenTesten, ob der Berührungssensor „Gedrückt“, „Ausgelassen“ oder „Angestoßen“ wird, und das Ergebnis über eine Logische Datenleitung abrufen.
MesswerterfassungSiehe Messwerterfassung.
Berührung
Direktlinks