Robodance

Robodance

Wir wollen unseren Roboter nun tanzen lassen und dabei einige Dinge zur Programmierung und zu den Möglichkeiten des NEPO-Editors lernen. Du wirst lernen...

  • wie man den Roboter auf unterschiedliche Art bewegt.
  • wie man Wiederholungen programmiert.
  • was Variablen sind.

Zuerst wirst Du Schritt für Schritt eine vorgegebene Bewegungsfolge nachprogrammieren. Anschließend sollst Du aber selbst kreativ werden und deinem Roboter coole Moves beibringen!

First Dance

Es gibt mehrere Befehle, die Deinen Roboter dazu bringen, sich zu bewegen. Einige sind in folgendem Programm umgesetzt:

Setze das Programm um, teste es in der Simulation und anschließend auf dem Roboter. Beschreibe die Wirkung der einzelnen Befehle.

Richtig tanzen

Das obige Programm bewirkt zwar, dass unser Roboter sich bewegt, richtig "Tanzen" kann man das aber ehrlich gesagt nicht nennen. (Zumindest hoffe ich, dass Du besser tanzen kannst :-) Das soll sich nun aber ändern. Ein Programm, das einen einzelnen Tanzschritt umsetzt, könnte so aussehen:

Da die meisten Lieder im 4/4-Takt geschrieben sind, soll der Roboter vier gleiche Tanzschritte hintereinander ausführen. Das Programm könnte damit folgende Form haben:

Jetzt stelle dir einmal vor wie das Programm aussehen müsste, damit der Roboter noch länger tanzt. Nicht schön, oder? Wir benötigen also eine Möglichkeit, um dem Roboter zu sagen, dass er etwas wiederholen soll.

Finde im NEPO-Editor eine Möglichkeit, um Wiederholungen auszuführen. Programmiere das oben dargestellte Programm mit Hilfe von Wiederholungen. Simuliere und teste am Roboter.

Immer die gleiche Schrittfolge ist natürlich langweilig. Also soll der Roboter nun vier andere Schritte ausführen:

Beschreibe was sich alles am Programm ändern müsste, wenn der Roboter nun auf ein langsameres Stück im 3/4-Takt tanzen soll.

Um sich Werte zur Wiederverwendung zu merken, benutzt man als Programmierer Variablen. Eine Variable kannst Du Dir wie einen Notizzettel vorstellen, der einen Namen hat und auf den Du z.B. beliebige Zahlenwerte aufschreiben kannst.

Eine Variable erstellst Du im NEPO-Editor, indem Du oben auf das "+" klickst:

Wir sollten uns eine Variable erzeugen, in der wir die Zeit (in Millisekunden) für eine Viertelnote speichern:

Dann können wir aus der Block-Kategorie "Variablen" die Variable "zeit" an alle Stellen setzen, an denen wir vorher die Zahl "200" stehen hatten (Variablennamen schreibt man in vielen Programmiersprachen klein. Das musst Du aber nicht so machen):

Erweitere Dein Programm entsprechend. Teste in der Simulation und anschließend am Roboter. Verändere auch das Tempo, indem Du den Wert der Variablen veränderst.

Die Taktart wird zwar nur an zwei Stellen benutzt. Trotzdem ist es besser diese ebenfalls in einer Variablen zu speichern, falls sich die Taktart ändert. Also machen wir das so :-) (Kannst Du auch begründen warum es besser ist?)

Bisher tanzt Dein Roboter nur zwei Takte lang. Das ist ein wenig kurz.

Ergänze eine weitere Schleife (so nennt man Wiederholungen auch), die Dein gesamtes Programm z.B. 10 mal wiederholt. Achtung: Benutze an dieser Stelle keine "Wiederhole unendlich oft" - Schleife. Solche Endlosschleifen benutzt man eher in Spezialfälllen, da Dein Roboter dann nicht mehr reagiert.

Dein Tanz

Nun ist es an der Zeit selbst kreativ zu werden.

Erstelle einen eigenen Tanz für den Roboter. Benutze dabei Wiederholungen und mindestens eine Variable. Teste in der Simulation und lass den Roboter dann tanzen :-)

Übung - Bewachen der Burgmauer

Der Roboter soll eine Burgmauer bewachen und dafür eine bestimmte Strecke auf folgende Art ablaufen:

Mache Dir die einzelnen Teilschritte, die der Roboter geht, klar und überlege wo Du Wiederholungen nutzen kannst. Schreibe das Programm, teste es im Simulator und danach am Roboter.

Ersetze die konkreten Zahlen für die Geschwindigkeit und für die Länge der einzelnen Teilstrecken durch Variablen. Auf diese Art kannst Du ganz leicht die Geschwindigkeit des Roboters und die Größe der abgelaufenen Fläche verändern. Teste in der Simulation und danach am Roboter.