Skip to content →

Mr. EXPLOR3R

Bevor wir Mr. EXPLOR3R bauen, lernen wir nützliche Programmierelemente kennen und beschäftigen uns mit warten, wiederholen, eigenen Blöcken und Multitasking. Klingt im ersten Moment schwer verdaulich, was es aber nicht war. Los geht’s!

Mach mal Pause: Der Warteblock

Mit einem Warteblock kann ein Programm für eine bestimmte Dauer angehalten werden. Im Zeit-Modus geschieht dies mit einer Angabe in Sekunden, wobei dies auch Dezimal geschehen kann. Als Beispiel: 50 Millisekunden = 50 Tausendstelsekunden = 0,05 Sekunden

Wir haben diesen Warteblock zusammen mit dem Anzeigeblock schon verwendet. Damit konnten wir die Anzeige-Dauer eines Bildes auf dem Display verlängern, damit wir die Texte lesen konnten.

Selbst entdecken: Timer

Mrtz lies die Aufgabe vor:
Erstelle ein Programm, das deinen EV3 in einen Timer verwandelt, den du für Brettspiele verwenden kannst. Das Programm sollte einen Timer anzeigen, der die Restzeit für einen Spielzug angibt. Wenn die Zeit abgelaufen ist, sollte dein Roboter «Game over» sagen, um anzuzeigen, dass der nächste Spieler an der Reihe ist. Oder du verwendest Klangblöcke und lässt den Roboter sagen, wie viel Zeit noch übrig ist.

HINWEIS: Verwende eine Reihe von Anzeigeblöcken im Bild-Modus mit Warteblöcken dazwischen. Suche in der Bildliste nach Abbildungen mit dem Namen «Timer 0», «Timer 1» usw.

Symbolische Darstellung eines Einzelbildes zum Programm «Timer»
Symbolische Darstellung eines Einzelbildes zum Programm «Timer»

Da wir uns mit den Warteblöcken schon gut auskennen, war diese Aufgabe eine reine Fleissübung: Bild anzeigen, warten, Bild anzeigen usw.,  zum Schluss «Game over» sagen und schon ist der Timer fertig.

EXPLOR3R entdeckt das Quadrat und wir den Schleifenblock

Mrtz wird zum EXPLOR3R und bekommt von Hnz den Auftrag, ein Quadrat zu fahren. EXPLOR3R, erzähl mir, was Du tust.

Der in den EXPLOR3R verwandelte Mrtz erzählt:

Ich fahre einen Meter vorwärts
Ich drehe einen Viertelkreis (90 Grad) nach rechts
Ich fahre einen Meter vorwärts
Ich drehe einen Viertelkreis (90 Grad) nach rechts
Ich fahre einen Meter vorwärts
Ich drehe einen Viertelkreis (90 Grad) nach rechts
Ich fahre einen Meter vorwärts
Ich drehe einen Viertelkreis (90 Grad) nach rechts

Nun steht der EXPLOR3R-Mrtz wieder genau gleich da wie zu Beginn.

Unser Auftrag: Programm OneSquare (ein Quadrat)

  • Klang abspielen (Note, 440Hz, 0,5, 100, 0)
  • Quadrat fahren
  • Klang abspielen (Datei: Goodbye, 100, 0)
  • Benutze nur fünf Blöcke
OneSquare
Programm «One Square» mit Schlaufe

Die Anzahl der Blöcke konnten wir einfach mit einer Schlaufe verringern. Durch die Beschreibung von Mrtz wie er ein Quadrat fährt, haben wir die Wiederholungen einfach erkennen können und die Schlaufe richtig eingesetzt.

Neuer Auftrag: Programm Infinite Square

Lass EXPLOR3R endlos Quadrate fahren mit nur einem zusätzlichen Block. Nach jedem Quadrat soll er «Goodbye» sagen.

Ganz einfach: Noch einen Schlaufenblock im Modus «endlos» einfügen, welcher das Quadrat fahren und den Klangblock enthält, und erledigt ist der Auftrag.

Selbst entdecken: Bewache den Raum

Mrtz liest die Aufgabe vor:

Erstelle ein Programm, dass den EXPLOR3R vor deiner Zimmertür sich ständig hin- und zurückbewegen lässt, al wenn er sie bewachen würde. Verwende einen Schleifenblock im Modus «Unbegrenzt» und einen weiteren Bewegungslenkungsblock für die Drehung.

Dieses Programm bereitet keine Schwierigkeiten:

  • Ein Standardsteuerungsblock lässt den EXPLOR3R vorwärts fahren. Die Anzahl Sekunden, die der Roboter fährt, entspricht der Türbreite
  • Der zweite Standardsteuerungsblock dreht den Explorer um 180 Grad
  • Beide Blöcke in eine Endlosschlaufe einpacken

Und schon ist der EXPLOR3R zu einem Wachhund geworden.

Selbst entdecken: Dreieck

Du hast ein Programm erstellt, das deinen Roboter ein Quadrat fahren lässt. Wie kannst du das Programm «OneSquare» modifizieren (anpassen), um die Form eines Dreiecks zu fahren? Verwende weitere Schleifenblöcke, um die Form fünf Mal zu fahren.

Hinweis: In «Selbst entdecken: Exakte Drehungen» hast du die Anzahl an Grad herausgefunden, damit der Roboter eine Drehung um 180 Grad macht. Kannst Du diesen Wert nutzen, um die Anzahl Grad für eine 120-Grad-Drehung auszurechnen, sodass der Roboter ein Dreieck fährt?

Wir fragen uns: Wieso eine 120 Grad Drehung?

Schauen wir uns die Geometrie des Quadrates und des Dreiecks an.

Ein Quadrat mit einer Winkelsumme von 360 Grad
Ein Quadrat mit einer Winkelsumme von 360 Grad

In einem Quadrat sind alle Seiten gleich lang. Jeder Winkel ist ein rechter Winkel und damit 90 Grad. Zusammen ergibt das die Summe von 360 Grad, wie in jedem Viereck.

Gleischenkliges Dreieck mit einer Winkelsumme von 60 Grad
Gleischenkliges Dreieck mit einer Winkelsumme von 60 Grad

In einem Dreieck ist die Summe der Winkel 180 Grad. Bei einem gleichseitigen Dreieck sind alle Seiten gleich lang. Damit sind auch die Winkel gleich gross:

180 Grad : 3 = 60 Grad

Da der Roboter aussen herum dreht, berechnet sich die Drehung:

180 Grad (fahrt gerade aus) - 60 Grad = 120 Grad

In «Selbst entdecken: Exakte Drehungen» haben wir für eine Drehung von 90 Grad einen Wert im Standardsteuerungsblock für Gradzahl den Wert 270 ermittelt.

Die Berechnung übernimmt Hnz mit einem Dreisatz:

90 Grad Drehung => Gradzahl 270
120 Grad Drehung => Gradzahl ?

Um es verständlicher zu machen, berechne ich:

10 Grad Drehung = Gradzahl 270 / 9 = Gradzahl 30
120 Grad Drehung = Gradzahl 30 * 12 = Gradzahl 360

Wir haben das Programm «Infinite Square» kopiert und daraus «Triangle» erstellt, den Wert für die Drehung korrigiert (120 Grad Drehung) und die Anzahl der Schlaufendurchgänge reduziert auf drei (Dreieck mit drei Drehungen). Fertig.

Qi Gong dazwischen

Der Zvieri durfte nicht fehlen und wir gönnten uns eine Pause. Um auch etwas Bewegung hinein zu bringen, hat Hnz eine Qi Gong-Vorübung vorgeführt und mit Mrtz kurz eingeübt. Das wiedrum war schwerer als manches Programm und braucht noch Übung.

Eigene Blöcke selbst gemacht

In eigenen Blöcken können mehrere Blöcke kombiniert und zusammen gefasst werden.

Programm MyBlockDemo

Wir erstellen ein Programm aus fünf Blöcken, in dem der EXPLOR3R die Statusleuchte auf rot setzt, «Hello, Good Morning» sagt und die Statusleuchte wieder zurück auf grün setzt. Anschliessend wählen wir die fünf Blöcke ohne den Startblock aus. Im Menü suchen wir den Punkt «Werkzeuge :: Eigene Blöcke erstellen», geben dem Block den Namen «Talk», fügen eine Beschreibung des Blocks ein und wählen ein passendes Symbol.

Zurück im Ursprungsprogramm «MyBlockDemo» ersetzen wir die ausgewählten Blöcke mit dem eigenen Block «Talk», fügen eine Standardsteuerung ein und schliessen das Programm mit «Talk» ab.

Eigene Blöcke können das Programm übersichtlicher und verständlicher machen. Weitere Möglichkeiten mit den «Eigenen Blöcken»:

  • Eigene Blöcke können mit «Doppelklick» bearbeitet werden
  • Eigene Blöcke können innerhalb des Projektes in allen Programmen verwendet werden
  • Eigene Blöcke können in andere Projekte kopiert werden
  • Eigene Blöcke können exportiert / importiert werden. Dies gilt auch für Programme, Klänge oder Bilder

Multitasking

Bisher ist ein Programm vom Startblock her Block für Block der Reihe nach durchgelaufen. EV3 kann Blöcke auch parallel (gleichzeitig) ausführen. Dies geschieht über mehrere Startblöcke oder verzweigte Weiterleitungen. Wir schauen uns dazu die Beispiele im Buch genauer an.

Ressourcenkonflikte vermeiden

Beim Multitasking ist speziell zu beachten, dass Konflikte bei der Verwendung von Ressourcen wie Motoren oder Sensoren vermieden werden. Genauso wie ein Mensch nicht gleichzeitig vorwärts und rückwärts gehen kann, geht das bei Motoren auch nicht. Leider gibt es von der Programmieroberfläche keinen Hinweis dazu, wenn Ressourcen gleichzeitig mehrfach verwendet werden. Wir müssen also selber aufpassen.

Deshalb wird auch empfohlen, Multitasking wenn immer möglich zu vermeiden.

Selbst entdecken: Multitasking

Mrtz liest die Aufgabe vor:

Lasse den Roboter unbegrenzt im Quadrat herumfahren und gleichzeitig immer wieder «LEGO, MINDSTORMS, EV3» sagen.

Hnz zeigt Moritz den Nutzen, schon Programmiertes in ein neues Programm zu kopieren und so wieder zu verwenden. Quadrate fahren haben wir dem EXPLOR3R schon bei gebracht und wir nutzen dieses Programm. Ebenso haben wir den Roboter viele verschiedene Dinge sagen lassen. Auch diese Teile kopieren wir aus den anderen Programmen und passen die Tonblöcke an. Mit einem zusätzlichen Startblock ist das Multitasking auch gleich erledigt.

Programm «Multitasking» mit zwei Startblöcken
Programm «Multitasking» mit zwei Startblöcken

Selbst Konstruieren: Mr. EXPLOR3R

Damit auch Mrtz etwas zwischen unseren Programmiertagen bauen kann, hatte ich diese Konstruktionsaufgabe vorgesehen. Wir sind aber so schnell durch die vorgesehenen Aufgaben gerast, dass immer noch genügend Zeit übrig blieb, bis der Chauffeur vor der Türe stand.

Also: los geht’s!

Mrtz liest vor:
Baue einen mittleren Motor ein, der den EXPLOR3R mit einer winkenden Hand ausstattet. Nutze weitere Lego-Teile, um den Roboter mehr aufzuschmücken und ihn in Mr. EXPLOR3R zu verwandeln. Lasse ihn ständig winken und gleichzeitig eine Begrüssung wie «Good morning!» sagen.

Eine einfach Hand zu konstruieren und die Montage des Motors am EXPLOR3R hat uns konstruktiv etwas gefordert. Zu erst hatte Hnz die Idee, die Hand aus festem Papier zu schneiden, aber Mrtz war da schon am Zusammenbau der Finger. Mit dem zusätzlichen Daumen sind wir zufrieden mit unserem schlichten und freundlichen Mr. EXPLOR3R. Das Programm dazu: Kein Problem.

Schön ist in der Programmieroberfläche bei laufenden Programmen zu sehen, welcher Block gerade ausgeführt wird (auf die Wellen in den Titelleisten der Blöcke achten).

Die Aufgaben und Themen des Nachmittags waren umfangreich und Hnz dachte, mehr als genug vorbeireitet zu haben. Aber wir sind rasend schnell vorwärts gekommen, dass die drei Stunden zwar voll waren, aber wir schlussendlich alles mit genügend Zeit kennen lernen konnten.

Published in Mindstorms Allgemein

Comments

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.