#11 Buchstabensalat

In der vorletzten Aufgabe verbindest du Konzepte, die du in den vorherigen Übungen bereits gemeistert hast: Schleifen, Bewegung, LEDs und den Einsatz des Bildschirmes. Gleichzeitig lernst du einen neuen Operator zum Verbinden von Werten kennen:

Sieh dir zuerst die möglichen Buchstaben an und suche dir einen aus:

Versuche jeden Schritt der Aufgabe – Buchstaben nachfahren, LEDs einschalten, Ausgabe des Buchstabens am Bildschirm und rückwärts fahren – Stück für Stück zu erledigen und teste zwischendurch, ob dein mBot auch das tut was er soll.

Die Lösung findest du wie immer weiter unten.

In dieser Musterlösung werden wir den Buchstaben C nachfahren. Dazu verwenden wir einen Ausdruck im A4 Format und werden die Maße verwenden. Das musst du aber nicht machen!

Der einfachste Weg wäre natürlich jede Bewegung vollständig als Codeblock einzufügen:

Es gibt aber einen Trick: Anstatt die Bewegungen in VORWÄRTS und RÜCKWÄRTS aufzuteilen, können wir die Rückwärtsfahrt auch mit einer Vorzeichenänderung über Operatoren durchführen – bei einer positiven Zahl (z.B. +23) fährt der mBot 23 cm vorwärts, bei einer negativen Zahl (z.B. -23) fährt der mBot 23 cm rückwärts. Das funktioniert auch mit unseren Winkeln!

Auf diesem Weg kann der Code mit einer Schleife verkürzt werden. Wir müssen dazu nicht mehr machen, als nach der ersten Schleife die Werte auf negative Zahlen zu ändern. Dazu verwenden wir eine VARIABLE “vorzeichen” und den OPERATOR VERBINDE … MIT … :

Was passiert in diesem Code?

Für die Vorwärtsfahrt setzen wir das Vorzeichen zuerst auf ‘+’. In der Schleife wird es durch den Operator mit der Entfernung oder dem Winkel verbunden. Nachdem die Schleife einmal durchgeführt und der Buchstabe nachgefahren wurde, setzen wir das Vorzeichen am Ende nur auf ‘-‘ und beim nächsten Durchgang fährt der mBot so die selbe Strecke, nur rückwärts.

Bei anderen Buchstaben kannst du zusätzliche Schleifen verwenden – wie beim E, in dem sich ein Muster erkennen lässt – um den Code übersichtlicher und kürzer zu halten.

#12 Treppensteigen

Bist du bereit für eine letzte Übung bevor du dich selbst in die Welt des mBot stürzt und deine eigenen Ideen umsetzt? Nach allem was du über die letzten elf Aufgaben gelernt hast, sollte diese hier im Handumdrehen erledigt sein:

Bevor du einen überladenen Code schreibst, überlege dir, welches Muster sich in einer Treppe befindet und wie du dieses Muster zu deinem Vorteil nutzen kannst! Viel Spaß und die Lösung findest du wie immer weiter unten.

Sieh dir die Animation an, um ein wenig über das Muster nachzudenken:

Ist dir aufgefallen, dass sich der Schritt vorwärts, die Linksdrehung, ein weiterer Schritt vorwärts und die Rechtsdrehung für jede Stufe der Treppe wiederholen? Das ist dein Muster!

Dieses Muster kannst du ohne großen Aufwand mit einer Schleife und wenigen Blöcken als Programmcode umsetzen:

Wenn du dein Programm noch etwas spannender gestalten möchtest, kannst du auch einen Zähler für jede bestiegene Stufe einbauen und auf dem Bildschirm ausgeben. Dazu kannst du eine VARIABLE verwenden, die nach jeder Stufe um eins erhöht wird:

Du kannst das Programm erweitern wie du möchtest. Viel Spaß auf deinem weiteren Weg als Coder*in für Roboter – solltest du selbst coole Ideen umgesetzt haben, würde es uns freuen davon in den Kommentaren zu hören – auch wir lernen gerne etwas dazu!

Im folgenden Tutorial findest du weitere tolle Übungen, mit denen du deine Fähigkeiten im Umgang mit dem mBot erweitern kannst:

#10 Freifahrt mit WENN, DANN

In dieser Aufgabe wollen wir dem mBot erlauben sich etwas freier im Raum zu bewegen, greifen dabei auf den Ultraschallsensor zurück und arbeiten mit bedingten Anweisungen und Verzweigungen:

Dein Grundgerüst aus der vorherigen Aufgabe kannst du hier wieder verwenden, aber du musst einige Änderungen machen und zusätzlich WENN …, DANN Blöcke aus der STEUERUNG verwenden.

Bisher hat dein mBot klar vorgegebene Aufgaben erledigt – geradeaus oder im Quadrat fahren, sich drehen, oder Informationen anzeigen. Das Ende war bekannt. In der Realität müssen Programme aber überprüfen, WANN oder WARUM sie das Programm beenden oder zur nächsten Aufgabe springen sollen. Dafür gibt es in jeder Programmiersprache bedingte Anweisungen und Verzweigungen, die über die Schlüsselwörter WENN, DANN und SONST aufgerufen werden. Der neue Block, den du für diese Aufgabe brauchst, sieht so aus:

Setze ihn ein, um deinem mBot mehr Freiheiten zu geben. Hier hast du einige Fragen, die du dir zur Lösung der Aufgaben stellen kannst – die Lösung selbst findest du weiter unten:

Wie beende ich die Fahrt des Roboters?

Wann frage ich ab, ob der Roboter weniger als 10 cm zum Hindernis entfernt ist?

In welche Richtung soll er sich drehen sobald er auf ein Hindernis stößt?

Möchte ich eine zusätzliche bestimmte Aktion ausführen, wenn der Roboter wendet?

Starte mit deiner Lösung aus der vorherigen Aufgabe:

Mit diesem Code stoppt der mBot sein Programm, sobald er die vorgegebene Entfernung erreicht hat. Diese Bedingung müssen wir verändern, damit die Fahrt trotz Erreichen eines Hindernisses fortgesetzt wird. Ein einfacher Weg wäre es wieder eine Taste zu drücken:

Tausche diesen Block mit der Abfrage des Abstandes aus, heb den anderen Block aber auf! Die Anzeige der Beschriftung und die Vorwärtsbewegung können wir auch dort lassen wo sie sind. Um die bedingte Anweisung zum Abbiegen abzufragen, setzen wir den WENN, … DANN Block VOR der Vorwärtsbewegung IN der WIEDERHOLE Schleife ein:

In die diamantförmige Öffnung ziehst du den Operator, der den Vergleich KLEINER ALS 10 CM durchführt:

Durch diesen Code bewegt sich dein mBot vorwärts und überprüft vor jedem Schritt, ob der Abstand zum Hindernis mittlerweile zu gering ist. Der Codeblock in der bedingten Anweisung wird nur ausgelöst, wenn die Bedingung erfüllt ist. In diesem Fall ist der bedingte Codeblock das Drehen in eine bestimmte Richtung:

Durch diese Änderungen ist dein mBot startklar für seine erste Freifahrt durch einen Raum. Sei kreativ und überlege dir, was passiert, wenn er auf ein Hindernis stößt. In der Beispiellösung spielt der Roboter zum Beispiel einen traurigen Ton ab:

Bedingte Anweisungen werden dir in deiner Karriere als Coder*in immer wieder helfen deine Ziele zu erreichen – behalte sie für spätere Aufgaben gut in Erinnerung!

Hier findest du nochmal einen Überblick der Blöcke, die du für diese Aufgabe verwenden konntest:

#9 10 cm bis zum Hindernis

Es ist Zeit für eine Aufgabe, in der du zeigst, was du schon alles kannst – Bewegungen, Schleifen, Abstandsmessung und LEDs. Ergänzen werden wir deine bisherigen Skills mit Operatoren – so wirst du langsam ein Coding-Genie:

Dein Grundgerüst aus der vorherigen Aufgabe kannst du hier wieder verwenden, aber du musst kleine Änderungen machen und zusätzlich OPERATOREN verwenden. Operatoren sind wichtige Elemente in der Programmierung, mit denen du rechnen, vergleichen und Befehle verknüpfen kannst. Ein paar Beispiele für den mBot wären:

Sieh dir die Aufgabe nochmal an: “Wenn die Entfernung KLEINER ALS 10 CM ist” kannst du mit den Operatoren auch als Code ausdrücken. Suche dazu einen, der dieses KLEINER ALS beschreibt und baue ihn mit der Bewegung, Abstandsmessung und Lichtanzeige zu einem vollständigen Programm zusammen. Die Lösung findest du wie immer weiter unten.

Erinnere dich an dein Grundprogramm aus der letzten Aufgabe. Auch diesmal wollen wir den Code mit der Taste A starten und ausführen bis eine bestimmte Situation eintrifft:

Diese bestimmte Situation “Wenn die Entfernung kleiner als 10 cm ist” können wir durch den Operatoren KLEINER ALS ausdrücken:

Was vergleichen wir jetzt mit diesen 10 cm? Hier kommt unser Ultraschallsensor aus der letzten Aufgabe ins Spiel – während der mBot fährt wird immer wieder verglichen, ob er noch über 10 cm vom Hindernis entfernt ist:

In der Schleife zeigst du wieder den aktuellen Abstand als Beschriftung an und lässt den Roboter vorwärts fahren:

Die Schleife wird beendet, sobald der Abstand kleiner als 10 cm ist – sobald diese Bedingung eintritt schaltest du die LEDs ein und stoppst den Roboter. Diesen Code fügst du NACH der Schleife ein:

Dein fertiger Code könnte so aussehen:

Lass deinen Roboter fahren und beobachte, ob er wirklich vor dem Hindernis stehen bleibt. Du kannst den Code auch erweitern und den mBot einen Tanz aufführen lassen, sobald er sein Ziel erreicht hat!

Die nächste Aufgabe baut wieder auf deinem neu gewonnenen Wissen auf und ermöglicht deinem mBot seine erste Freifahrt!

Hier findest du nochmal einen Überblick der Blöcke, die du für diese Aufgabe verwenden konntest:

#8 Abstandsmessung

Jetzt wird es richtig aufregend – du verwendest in dieser Übung deinen ersten Sensor – den Ultraschallsensor – um die folgende Aufgabe zu lösen:

Der mBot soll die Messung durchführen, bis sie durch die Taste B beendet wird – hier kannst du eine neue Art der WIEDERHOLE-Schleife und den Bildschirm einsetzen.

Versuche die Aufgabe selbst zu lösen, bevor du dir die Lösung weiter unten ansiehst. Ein kleiner Tipp: die Arbeit mit den Codeblöcken funktioniert wie ein Puzzle – vielleicht findest du Blöcke, die IN andere Blöcke hineinpassen!

Beginne damit das Grundprogramm zu bauen. Sobald Taste A gedrückt wird, soll die Messung wiederholt werden, bis die Taste B gedrückt wird. Danach wird das Programm gestoppt. Du brauchst dazu den WIEDERHOLE BIS Block und die Bedingung TASTE B GEDRÜCKT? aus der Kategorie SENSING. Hier siehst du, wie der diamantförmige Block in die dazugehörige Lücke in der Schleife passt. Das Grundgerüst könnte so aussehen:

Das Ergebnis der Messung möchtest du am Bildschirm anzeigen – dazu verwendest du den ZEIGE BESCHRIFTUNG Block aus der letzten Aufgabe:

Auch hier setzt du wieder ein Puzzle zusammen. Der Block ULTRASCHALLSENSOR ABSTAND ZU EINEM OBJEKT aus der Kategorie ULTRASCHALLSENSOR passt durch seine ovale Form in die Lücke des Beschriftungsblocks:

Dein fertiges Programm sollte jetzt so aussehen:

Probier deinen neuen Abstandsmessungsroboter aus! Du kannst auch gerne ein Lineal verwenden, um den Abstand zu überprüfen und zu sehen, ob dein mBot auch richtig arbeitet! Merke dir den Einsatz des Ultraschallsensors für die nächsten Aufgaben – ab jetzt wird es kniffliger!

Hier findest du nochmal einen Überblick der Blöcke, die du für diese Aufgabe verwenden konntest:

#6 Geometrische Formen

Das Quadrat war ein Kinderspiel, oder? Aber:

Zu deinen Überlegungen aus Aufgabe 5 kommen jetzt zwei neue: Welche Winkel haben unterschiedliche regelmäßige Vielecke und wie blinkt der mBot?

Im besten Fall hast du schon gelernt, wie man die Winkel in regelmäßigen Vielecken berechnet. Zur Steuerung unseres Roboters müssen wir den Mittelpunktswinkel berechnen. Das geht ganz einfach, indem wir die 360 ° eines Vollkreises durch die Anzahl an Ecken dividieren:

Denke an das Quadrat aus der vorherigen Aufgabe. n steht für die Anzahl der Seiten des Vielecks. Verwendest du also VIER, so ergibt die Formel 90 ° für jeden Winkel. Vergiss nicht, die Bewegungen so oft zu wiederholen wie es Ecken gibt.

Das Blinken für den zweiten Teil der Aufgabe erreichst du über Light Emitting Diodes – dort findest du eine schöne Auswahl an Steuerungen für das Licht. Das machst du am besten über eine zweite Schleife in der sich alles fortlaufend wiederholt!

Probiere verschiedene Formen aus und vergiss dabei nicht den Winkel für die jeweilige Figur zu ändern!

Hier findest du eine mögliche Lösung für ein Achteck:

Gratulation, du kannst den mBot mittlerweile ganz genau steuern und mit ihm auch Lichter abspielen. In der nächsten Aufgabe wirst du etwas neues probieren: den Bildschirm am CyberPi.

Hier findest du nochmal einen Überblick der Blöcke, die du für diese Aufgabe verwenden konntest:

#5 Quadrat

Es ist wieder an der Zeit dein bisheriges Wissen zu verknüpfen! Diesmal soll dein mBot eine geometrische Form nachfahren – ein Quadrat mit einer von dir festgelegten Seitenlänge:

Bevor du dich auf die Aufgabe stürzt, kannst du deine Computational Thinking Skills wieder ein wenig üben – diese Fragen helfen dir dabei:

Welche einzelnen Bewegungen muss der mBot machen, um ein Quadrat nachzufahren?

Welchen Winkel braucht der mBot, um die Figur genau abzufahren und wieder zum Startpunkt zu kommen?


Wie kann ich den Code so einfach wie möglich machen?

Versuche die Aufgabe selbstständig zu lösen, du kennst bereits jeden Schritt – baue den Code nur noch richtig zusammen! Du schaffst das! Die Lösung findest du weiter unten!

Hast du es geschafft? Hier findest du nochmal einen möglichen Lösungsweg.

Die erste Frage lässt sich leicht beantworten. Der mBot braucht eigentlich nur zwei Bewegungen, um ein Quadrat nachzufahren: VORWÄRTS und LINKS/RECHTS ABBIEGEN:

Auch die Antwort auf die zweite Frage findest du im Block bereits. Ein Quadrat besteht aus vier Winkeln zu je 90 °. Du könntest diese beiden Codeblöcke also einfach dreimal duplizieren und schon fährt dein mBot im Quadrat. Wir haben aber gelernt, dass das auch einfacher geht, nämlich mit einer Schleife:

Die Schleife wiederholt die beiden Bewegungen viermal und schon hast du dein Quadrat. Vergiss nicht auf unseren Start- und Endblock! Dein fertiges Programm sollte so aussehen:

In der nächsten Aufgabe versuchen wir andere geometrische Formen zu fahren – mach dich bereit!

Hier findest du nochmal einen Überblick der Blöcke, die du für diese Aufgabe verwenden konntest:

#1 Erste Schritte – vorwärts fahren

Aller Anfang ist leicht und so du kannst deine ersten Programme für den mBot 2 mit wenigen Blöcken erstellen!

Gehe dazu auf die Entwicklungsoberfläche von makeblock und füge deinen mBot über das Plus-Symbol auf der linken Seite hinzu.

Wähle im neuen Fenster dein mBot-Modell – du wirst vermutlich mit dem mBot 2 arbeiten.

Jetzt wählst du die Verbindung aus. Wenn du mit der Tablet- oder Smartphone-App arbeitest, kannst du dich direkt verbinden. Bist du auf einem Computer, wechselst du am besten zur direkten Verbindung und wählst Bluetooth- oder Kabelverbindung aus.

Wenn die Verbindung hergestellt ist, kannst du schon mit der ersten Aufgabe loslegen:

Deinen mBot in eine Richtung zu bewegen, ist nur eine Frage von drei Blöcken! Bevor du nach diesen suchst hilft es dir vielleicht zu überlegen, wie dein Programm genau funktionieren soll:

Wann startet der mBot mit der Bewegung?

Wie weiß der mBot, dass er genau 50 cm fahren soll?

Was passiert, nachdem die Vorwärtsbewegung abgeschlossen ist?

Für die erste Frage bietet dir die Entwicklungsoberfläche unter EREIGNISSE ein paar Möglichkeiten. Versuchen wir es mit dem Block:

Die zweite Frage führt dich zur Kategorie MBOT2 CHASSIS. Versuche selbst einen passenden Block zu finden, bevor du weiterliest – die Blöcke bieten dir viele Möglichkeiten die Aufgabe zu lösen, ein bestimmter Befehl hilft uns aber sie punktgenau zu erfüllen! Bist du bereit? Hier ist der passende Block:

Abschließend wollen wir dem mBot sagen, dass seine Aufgabe erledigt ist und das Programm beendet werden kann. Versuche auch hier wieder einen passenden Block zu finden, bevor die die Lösung ansiehst. Du findest ihn unter STEUERUNG:

Dein fertiges Programm sollte jetzt so aussehen – war doch gar nicht so schwer, oder?

Merke dir für zukünftige Aufgaben, dir das ‘Problem’ in kleine Schritte aufzuteilen und dich nur auf das Wichtige zu fokussieren. Ab jetzt weißt du auch schon, wie du den mBot bewegst – du kannst dieses Wissen also in den späteren Aufgaben wieder anwenden und mit anderen Befehlen verbinden. Diese Art zu Denken und an Probleme heranzugehen nennt man Computational Thinking!

Gratulation, du hast deinen ersten Code zur Steuerung eines Roboters geschrieben! Gehe zu Aufgabe 2 und versuche auch diese Übung zu lösen!

Hier findest du nochmal einen Überblick der Blöcke, die du für diese Aufgabe verwenden konntest: