Nachdem wir nun die Datenleitungen kennen gelernt haben, kommen nun die Matheblöcke dazu, mit denen der Roboter Berechnungen durchführen kann. Mit dem SK3TCHBOT testen wir die Programme.
Datenblöcke verwenden
Alle Datenblöcke haben eine eigene Funktion und verarbeiten Werte aus Datenleitungen.
Der Matheblock
Mit dem Matheblock können wir mit zwei Werten rechnen (arithmetische Operationen ausführen). Wir können zwei Werte addieren, subtrahieren, dividieren, multiplizieren, aber auch den absoluten Wert ermitteln, die Quadratwurzel ziehen oder potenzieren. Dabei können die Werte im Block eingegeben werden oder aus einer Datenleitung kommen.
Im erweiterten Modus können mit maximal vier Werten mehrere Operationen durchgeführt werden. Zum Beispiel (a-b)*c.
Das klingt komplizierter, als es ist. Nach ein paar «Selbst entdecken»-Aufgaben kennen wir den Matheblock nun recht gut.
Der Zufallsblock
Manchmal brauchen wir in Programmen eine zufällig erzeugten Wert. Im Modus logischer Wert liefert der Zufallsblock wahr oder falsch, verhält sich also wie eine geworfene Münze. Im Modus numerischer Wert liefert der Block eine Zufallszahl zwischen einer unteren und einer oberen Grenze. Dieser Block ist besonders nützlich, wenn der Roboter etwas Unerwartetes tun soll.
Der Vergleichsblock
Der Vergleichsblock prüft, ob ein numerischer Wert gleich, ungleich, grösser, grösser oder gleich, kleiner oder kleiner oder gleich einem anderen numerischen Wert ist. Das Resultat des Vergleiches ist wahr oder falsch und kann per Datenleitung weiter verwendet werden.
Der Block Logische Verknüpfungen
Dieser Block vergleicht zwei Werte aus logischen Datenleitungen:
- Im Modus «und»: wenn beide wahr sind ist das Resultat = wahr
- Im Modus «oder»: wenn einer der beiden Werte wahr ist, dann ist das Resultat = wahr
- Im Modus «exklusives oder»: wenn eine wahr und die andere falsch ist, ist das Resultat = wahr
- Im Modus «nicht»: hat nur einen Eingang und kehrt die Eingabe um. Aus wahr wird falsch und umgekehrt
Der Bereichsblock
Der Bereichsblock prüft, ob ein Wert innerhalb eines definierten Bereichs liegt. Die Randwerte zählen dazu. Der Block kann im Modus «innerhalb» oder «ausserhalb» betrieben werden.
Der Rundungsblock
Der Rundungsblock wandelt eine Zahl mit Dezimalstellen in eine ganze Zahl um. Dabei stehen die Modi «aufrunden», «abrunden», «nächster Wert» oder «kürzen» zur Verfügung.
Der Textblock
Der Textblock kombiniert bis zu drei Eingaben zu einer Ausgabe. Dabei können die Eingaben über eine Textdatenleitung erfolgen oder direkt im Block eingegeben werden. Ist ein Eingang leer, wird er ignoriert.
Eigene Blöcke mit Datenleitungen erstellen
Datenleitungen können auch für eigene Blöcke verwendet werden. Damit können wir sie mit Eingabe- und Ausgabewerten ausstatten. Diese Werte können von unterschiedlichem Typ wie Text, numerisch oder logisch sein. Ein nachträgliches Bearbeiten der Eingabe- und Ausgabewerte unterstützt die EV3-Software nicht.
Strategien für eigene Blöcke
Eigene Blöcke mit Ein- und Ausgängen ermöglichen eine Vielzahl von Blöcken zu erstellen. Diese können in folgenden Fällen nützlich sein:
- bei sich wiederholenden Aufgaben
- zur Programmorganisation
- zur Informationsverarbeitung
Die Möglichkeit, eigene Blöcke um Datenleitungen zu erweitern, macht die eigenen Blöcke noch flexibler. Damit sind die eigenen Blöcke sehr ähnlich einsetzbar wie Funktionen in anderen Programmiersprachen. Das ist noch sehr abstrakt, doch wir werden noch Anwendungen in Programmen kennen lernen.
Mit diesen neuen Blöcken wagten wir uns an die Aufgabe, eine Roboter-Stoppuhr zu konstruieren und programmieren. Wir wählten eine Konstruktion aus drei separaten Zeigertürmen für die Anzeige der Sekunden, Minuten und Stunden. Allerdings zeigte sich bei der Programmierung, dass sich die Zeiger nicht so langsam wie notwendig bewegen liessen. Mit so wenig Leistung konnte der Motor nicht einmal beim Sekundenzeiger umgehen. Wir hätten sehr aufwändige Getriebe bauen müssen, worauf wir verzichteten.
Lustige Episode am Rand: Mrtz und Hnz besprachen erst die Möglichkeiten, wie so eine Stoppuhr konstruiert werden könnte. Es dauerte ein wenig, bis der viel ältere Hnz merkte, dass der junge Ingenieur Mrtz keine Stoppuhren mit Zeigern kannte, sondern nur Versionen mit digitaler Anzeige.