Skip to content →

Datenleitungen nutzen mit dem SK3TCHBOT

Wir haben gelernt, wie sich Blöcke gegenseitig konfigurieren können. Die Blöcke senden sich Informationen über Datenleitungen.

SK3TCHBOT bauen

Der SK3TCHBOT dient zum Testen von Programmen mit Datenleitungen und Variablen. Der Roboter besteht aus dem EV3-Stein, drei Sensoren und zwei grossen Motoren, die als Eingabe oder Ausgabe für die Programme verwendet werden.

Der SK3TCHBOT

Mit Datenleitungen arbeiten

  • Informationen werden immer von einem Ausgang am Block über die Datenleitung an einen Eingang eines anderen Blockes gesendet
  • Der Wert einer Datenleitung kann angesehen werden, wenn wir mit der Maus darüber fahren. Das geht aber nur, wenn der EV3 über das Kabel am Computer angeschlossen ist
  • Datenleitungen werden gelöscht, in dem das Ende aus dem Block gezogen wird
  • Zwischen den mit einer Datenleitungen verbundenen Blöcken können andere Blöcke liegen
  • Der Wert muss im Ablauf des Programmes erst gelesen oder gemessen werden, damit er über die Leitung übertragen werden kann
  • Mehrere Datenleitungen können von einem Ausgang gelegt werden, aber nur eine pro Eingang
  • Blöcke mit Datenleitungen können auch in Schleifen verwendet werden

Datenleitungstypen

Es gibt drei Typen von Datenleitungen:

  • Numerisch
  • Logisch
  • Text

Die Anschlüsse sind auch optisch gut unterscheidbar:

  • Runder Anschluss für numerische Werte
  • Dreieckiger Anschluss für logische Werte
  • Viereckiger Anschluss für Textwerte

Numerische Datenleitung

  • Datenleitung gelb
  • überträgt Zahlenwerte
  • Beispiel: -5, 0, 3,75, 75

Logische Datenleitung

  • Datenleitung grün
  • überträgt logische Werte
  • Beispiel: wahr, falsch
  • nur bei Blöcken, die nur zwei Werte annehmen können. Beispiel Berührungssensor ist gedrückt = wahr; nicht gedrückt = falsch

Text Datenleitung

  • Datenleitung orange
  • überträgt Texte
  • Beispiel: Hallo, Ich bin ein Roboter, 5 Äpfel

Numerische und logische Arrays

In Datenleitungen können numerische wie auch logische Arrays transportiert werden. Arrays sind eine Reihe von Werten. Wir können uns eine Datenleitung als Eisenbahnschiene vorstellen. Darauf fahren Lokomotiven mit einem angehängten Güterwagen. In diesem Güterwagen ist der Wert, zum Beispiel eine Zahl, enthalten, welche auf den Schienen transportiert wird. So ist ein Array ein ganzer Güterzug, mit vielen aneinander gehängten Güterwagen, die alle einen einzelnen Wert enthalten.

Beispiel numerisches Array: | 75 | 3,14159 | -25 |

Typumwandlung

Normalerweise werden numerische Datenleitungen an Eingänge, die numerische Werte benötigen, angeschlossen. Die EV3-Software ermöglicht aber auch drei andere Kombinationen. Dazu wandelt die EV3-Software die Werte in der Datenleitung so um, dass der angeschlossene Block damit umgehen kann.

  • Logische Datenleitung an numerischem Anschluss:
    • wahr => 1
    • falsch => 0
  • Logische Datenleitung an Text-Anschluss:
    • wahr => 1
    • falsch => 0
  • Numerischer Anschluss an Text-Anschluss:
    • 3 => „3“
    • die Zahl 3 wird in Text „3“ umgewandelt

Sensorblöcke verwenden

Sensoren haben wir in Warte-, Schleifen- und Schalterblöcken verwendet. Mit Sensorblöcken können wir Sensorwerte auslesen und per Datenleitung übertragen. Im gelben Register sind alle Blöcke. Jeder Block kann im Modus «messen» oder «vergleichen» benutzt werden.

Modus «messen»

Ein Sensorblock im Modus «messen» nimmt eine Messung vor und gibt den Wert per Datenleitung an einen anderen Block weiter.

Modus «vergleichen»

Im Modus «vergleichen» wird ebenfalls eine Messung durchgeführt und der Wert kann über eine Datenleitung an einen anderen Block übergeben werden. Zusätzlich vergleicht er den gemessenen Wert mit einem Schwellwert. Dieses Ergebnis wird über eine logische Datenleitung übergeben.

Modus «vergleichen» und Signalwerte

Beim Infrarotsensorblock im Modus «messen» sind Signal-Entfernung und Signal-Richtung in einem Modus genannt Signal-Modus zusammen gefasst. Im Modus «vergleichen» erscheinen sie aber als separate Modi.

Modus «vergleichen» und der Berührungssensor

Ein Berührungssensorblock im Modus «vergleichen» ermittelt, ob der Sensor seit der letzten Abfrage durch irgend einen Block gedrückt wurde. Wenn wir also den Berührungssensor auslösen und den Status erst später abfragen, sagt der Block, er sei aktiviert worden. Das ist etwas irreführend.
Normalerweise wollen wir aber den gerade aktuellen Zustand des Sensors erfahren. Es ist daher besser, den Berührungssensorblock im Modus «messen» zu betreiben. In diesem Modus gibt der Block einfach wahr aus wenn der Sensor momentan gedrückt ist und falsch, wenn er gerade frei ist. Und zwar unabhängig davon, was früher im Programm passiert ist.

Wertebereich von Datenleitungen

Wenn wir Datenleitungen verwenden ist es für uns wichtig zu wissen, was passiert, wenn der Wert in der Leitung ausserhalb des zulässigen Bereichs befindet.

Beispiel: Die EV3-Statusleuchte akzeptiert die Werte 0 (grün), 1 (orange) und 2 (rot). Was passiert aber, wenn wir über eine Datenleitung den Wert 4 an die Leuchte liefern? Mit einem kleinen Programm testen wir das. Wenn wir einen Wert 3, 4 oder 5 liefern, leuchtet der Status in rot.

Sensorwerte für die einzelnen Modi

In der EV3-Hilfe finden wir die möglichen Werte für alle Blöcke. Die Dokumentation sagt aber nichts dazu, was passiert, wenn die Werte ausserhalb dieser erlaubten Bereiche liegen. Als Faustregel gilt: Die EV3-Software verwendet den nächstliegenden zulässigen Wert. Um aber sicher zu gehen, muss das jeweils mit einem kleinen Programm getestet werden.

Fortgeschrittene Programmablaufblöcke

Datenleitungen und Warte-, Schleifen- oder Schalterblöcke

Wir können Datenleitungen auch verwenden, um Werte an Warte-, Schleifen- oder Schalterblöcke zu senden. Wir können zum Beispiel den Zähler eines Schleifenblocks nutzen und damit die Motorengeschwindigkeit steuern. Oder eine Schleife beenden, wenn die Datenleitung den Wert wahr liefert.

Ebenso können wir Schalterblöcke verwenden, damit der Roboter Entscheidungen trifft. Statt einen Sensorwert zu verwenden, können wir eine logische Datenleitung nutzen. Oder wir schliessen eine numerische Datenleitung an und lassen den Roboter für jeden Wert eine andere Aktion ausführen.

Der Schleifen-Interrupt-Block

Die letzte Technik einen Schleifenblock zu beenden, besteht im Schleifen-Interrupt-Block. Ein Schleifenblock prüft normalerweise einen Sensor oder eine Logikbedingung für jeden Durchlauf. Ein Schleifen-Interrupt-Block stoppt die Schleife jedoch sofort.

Wir können eine Schleife sowohl von innen wie von aussen unterbrechen. Vorsicht: Eine Schleife aus einem parallel laufenden Programm zu unterbrechen kann zu unvorhergesehenem Verhalten des Roboters führen. Eine Schleife von innen zu unterbrechen hat nicht diese problematischen Auswirkungen.

Mit einigen Aufgaben und Programmen sammeln wir weitere Erfahrungen mit Datenleitungen und Sensorblöcken. Wir versuchen die Aufgabe meist erst mit Flussdiagrammen auf Papier zu lösen, in denen wir den Programmablauf skizzieren. Meist ist das Programm anschliessend leicht zu erstellen. Obwohl sich das Thema Datenleitungen und alle diese Typen recht kompliziert liest, habe ich den Eindruck, wir haben das Thema recht gut verstanden. Oder Mrtz?

Published in Mindstorms Allgemein