Lego WeDo 2.0 Programmierung

Keine Kommentare

Den Lego WeDo 2.0 Bausatz habe ich in bereits in einem ersten Post vorgestellt. Im heutigen Beitrag möchte ich genauer auf dessen Programmierung eingehen.

Meet Milo

Zunächst muss aber erst mal Hardware her. Der Baukasten enthält (zum Glück, wie ich finde) keine gedruckten Bauanleitungen. Diese gibt es online als PDF oder innerhalb der WeDo IDE. Für den weiteren Verlauf entscheide ich mich für das Modell MILO Arm 1, weil dieses auch einen Sensor enthält. Zusammengebaut sieht der kleine Milo dann so aus:

Lego Wedo 2.0 Milo

Im Folgenden werde ich zwei Entwicklungsumgebungen vorstellen, mit denen sich der SmartBrick programmieren lässt. Beide verwenden dabei visuell orientierte Programmiersprachen, die speziell für Kinder konzipiert sind. Diese haben u.a. den Vorteil, dass man zum Erlernen der Sprache nicht zwingend lesen können muss. Die Tokens der Sprache sind in diesem Fall keine Schlüsselwörter, sondern Icons oder andere grafische Elemente.

Die Lego WeDo 2.0 IDE

Passend zum WeDo 2.0 Set kann man kostenlos die Programmierumgebung herunterladen. Unterstützt werden Notebooks und Tablets. Die WeDo IDE verwaltet mehrere Workspaces, die optisch als Projekttagebücher dargestellt werden. Am Anfang werden wir mit einem leeren Workspace begrüßt:

Lego WeDo 2.0 IDE

Über die Hauptmenü-Punkte am oberen Rand lassen sich geführte, multimedial unterstützte Anleitungen durcharbeiten, Fotos und Videos aufnehmen und eine Projektdokumentation erfassen und exportieren.

Unten befinden sich die Programmbausteine, die sich per Drag & Drop auf den Arbeitsbereich in der Mitte ziehen lassen. Hier merkt man auch, dass die Handhabung vor allem auf touch-fähige Devices ausgelegt ist. Die Bedienung mit der Maus erscheint mir etwas umständlich. Mein Sohn, der mit Smartphones und Tablets groß wird, kann das ganze per Touch auch wesentlich schneller bedienen.

Die Bausteine sind farblich nach Funktion gruppiert.
– grün: Ansteuerung des Motors
– rot: Anzeige vom Multimedia-Elementen und Text in der IDE
– gelb: Steuer-Elemente wie Programm-Start und Eventing
– orange: Sensor-Events
– blau: Variablen und sonstiges

Hello World

Lego WeDo Hello World

Das gelbe Start-Icon startet die sequentielle Ausführung der nachfolgenden Blöcke. In diesem Fall das Öffnen des Anzeige-Fensters und die Ausgabe des Strings Hello World. Bestimmte Blöcke haben unten eine runde Ausbuchtung, an die man Parameter-Quellen andocken kann. Hier ist dies eine String-Konstante. Darüber hinaus sind auch Zahlen möglich, insb. solche, die von den Sensoren geliefert werden.

Die Ausführung ist dabei immer synchron, d.h. dass z.B. das Abspielen eines Sounds blockiert solange, bis der Sound komplett abgespielt ist. Eine aufeinanderfolgende Gruppe solcher Symbole bildet im Prinzip eine Prozedur, wie man sie aus anderen Programmiersprachen kennt. Davon lassen sich beliebig viele definieren.

Explizite Compile- und Deploy-Schritte sind nicht notwendig. Beim Touch auf das Start-Symbol reagiert der SmartBrick unmittelbar.

Go Milo Go!

Nun wollen wir ein erstes Programm für Milo schreiben. Dabei wird endlich auf den SmartBrick zugegriffen, und wir werden auch direkt den Abstandssensor verwenden.

Lego Milo Abstandssensor

Nach Programmstart setzen wir die Lampe am SmartBrick auf rot (welcher Wert welche Farbe repräsentiert sieht man, wenn man auf die Parameter-Quelle tippt), starten den Motor in Drehrichtung rechts, warten dann auf eine Änderung des Abstandssensors und stoppen den Motor wieder.

Die Sensoren liefern recht grobgranulare Wert zwischen 1-10, wobei 1 einen kleinen Abstand, 10 den größten Abstand representiert. In unserem Fall warten wir auf eine relative Verkleinerung des Abstands (Pfeil zeigt zum Sensor hin im orangefarbenen Element). Möglich sind weiterhin auch eine Reaktion auf die Vergrößerung des Abstands oder eine beliebige Änderung.

Mit diesem Programm läuft Milo los und lässt sich per Handzeichen oder von fixen Hindernissen stoppen. Und das mit „einer Zeile Code“ 😉

Wenn wir das Programm so ändern, dass wir auf die Vergrößerung des Abstandes reagieren und den Sensor leicht schrägstellen, bremst Milo z.B. an der Tischkante ohne in die Tiefe zu stürzen. Das wirkt auf den ersten Blick schon relativ autonom.

Events und Nebenläufigkeit

Interessanterweise lassen sich auch Events verarbeiten und so eine Nebenläufigkeit nutzen.

Lego WeDo Event Driven

Das Briefkasten-Symbol definiert zusammen mit der blauen Parameter-Quelle einen benannten Event-Handler. Der Event-Handler main beinhaltet unser bisheriges Programm, der Event-Handler dist zeigt in einer Endlos-Schleife den aktuellen Wert des Abstandssensors an. Das Hauptprogramm besteht dann noch aus dem Versenden der beiden Events main und dist, die Event-Verarbeitung findet dann nebenläufig statt.

Scratch

Mit der frei verfügbaren am MIT entwickelten Lern-Software Scratch läßt sich der SmartBrick ebenfalls programmieren. Eine allgemeine Einführung in Scratch würde den Rahmen dieses Artikels sprengen, daher werde ich hier nur auf die WeDo-spezifischen Aspekte eingehen.

Scratch kann über einen Extension-Mechanismus erweitert werden. Zur Ansteuerung von Lego WeDo installiert man zunächst den Scratch Device Manager und importiert dann mit der geführten Anleitung einige neue Programmierblöcke in die Scratch IDE:

Lego WeDo Scratch

Auf der rechten Seite sehen wir das Scratch-Äquivalent zu unserem Milo-Programm. Der Klick auf die Fahne (Starten des Hauptprogramm in Scratch) setzt die Farbe am SmartBrick (in Scratch ist der Wertebereich der Zahlen von 0-100) und startet den Motor. Das Sensor-Event ist in Scratch ein weiterer Flow, der bei Aktivierung den Motor stoppt.

Interessant ist der Scratch-Block play note [x] for [y] seconds:

SmartBrick hat ein API für einen Mini-Synthesizer

Offenbar hat der SmartBrick ein API für einen Mini-Synthesizer, das aber in der Lego WeDo IDE gar nicht ansteuerbar ist. Die Soundqualität hat Luft nach oben und die Lautstärke ist relativ gering und nicht regelbar. Aber immerhin …

Line Follower

Mit dem Lego WeDo Bausatz lassen sich auch sog. Line Tracer bzw. Line Follower konstruieren. Das sind Roboter, die sich bei ihrer Bewegung an einer Linie auf dem Boden orientieren können. Die Konstruktion eines Line Followers mit nur einem Motor ist eine nicht-triviale Aufgabe, die Yoshihito Isogawa (ein Meister der minimalistischen Lego-Roboter) sehr elegant löst:

Fazit

Mit dem Lego WeDo Bausatz lassen sich eine Vielzahl an lehrreichen kleinen Robotern konstruieren, die verschiedene mechanische Aspekte demonstrieren. Dabei kann mit der Lego WeDo IDE oder mit Scratch arbeiten, je nach Geschmack. In der Lego WeDo IDE sind allerdings geführte Anleitungen integriert, die den jungen Nutzern den Einstieg erleichtern. Unabhängig von der IDE sollte man ein touch-fähiges Devices verwenden, dabei ist die Bediengung etwas einfacher.

Die Programmier“sprache“ ist einfach zu erlernen, und nach Anfangsschwierigkeiten (,die aber eher beim Drag & Drop selbst lagen) hat mein sechsjähriger Sohn auch angefangen, mit verschiedenen Varianten der Programme zu experimentieren. Lego WeDo eignet sich zum Einstieg in Konstruktion und Programmierung aus meiner Sicht besser als ein Mindstorms Set, u.a. auch weil man im Wesentlichen ohne Lese-Fähigkeiten auskommt. Da es aber u.a. nur einen Motor gibt, sind die Möglichkeiten etwas eingeschränkt. Dies lässt sich allerdings umgehen, indem man bis zu drei WeDo Sets kombiniert, was im Unterricht als Zusammenarbeit mehrerer Kleingruppen auch ein Lernziel ist. Finanziell lohnt sich die Anschaffung mehrerer WeDo Sets nicht. Für komplexere Modelle empfiehlt sich dann doch eher das Mindstorms Basisset.

Tobias Trelle

Diplom-Mathematiker Tobias Trelle ist Senior IT Consultant bei der codecentric AG, Solingen. Er ist seit knapp 20 Jahren im IT-Business unterwegs und interessiert sich für Software-Architekturen und skalierbare Lösungen. Tobias hält Vorträge auf Konferenzen und Usergruppen und ist Autor des Buchs „MongoDB: Ein praktischer Einstieg“.

Share on FacebookGoogle+Share on LinkedInTweet about this on TwitterShare on RedditDigg thisShare on StumbleUpon

Kommentieren

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