DAS PROJEKT
In diesem Projekt experimentierst du mit bestimmten Fahrbefehlen. Wir zeigen dir, was du bei Fehlern im Programm tun kannst. Du lässt Edison Musik spielen, während er fährt. Dann erfährst du etwas über Ereignisse und wie man sie mit EdScratch programmiert. Zum Abschluss notierst du deine Ideen zum Programm in Kommentaren.
DEINE MISSION
Beginne mit einem Experiment:
- Erstelle ein Programm nur mit dem Befehl “set both motors to drive forwards…”
- Teste das Programm auf dem Edison. Was passiert?
Es passiert nichts. In der EdScratch-Umgebung wird im unteren Feld für Warnhinweise folgende Meldung angezeigt: “The ‘set both motors’ block will only turn the motors on. Make sure there are additional blocks used in the program to control the motor’s duration.” Das heißt, der Befehl stellt nur die Motoren für eine Vorwärtsfahrt ein. Zusätzlich muss die Dauer des Motorenlaufs mittels wait oder über eine Bedingung angegeben werden.
Wir haben hier absichtlich ein fehlerhaftes Programm erstellt. Fehler in Programmen nennt man “Bugs” (Ungeziefer). Das kommt daher, weil der erste bekannte Computerfehler durch eine Motte (Bug) verursacht wurde. Das Suchen und Beheben von Fehlern heißt “Debugging”. Fehler können entstehen, wenn im Programm Anweisungen falsch geschrieben wurden (Syntaxfehler) oder Dinge falsch aufgebaut wurden (logische Fehler).
Warnhinweise werden in der EdScratch-Umgebung im unteren Feld, der “Bug Box” angezeigt. Programme mit roten Warnungen können nicht auf den Roboter geladen werden. Gelbe Warnungen zeigen nur an, dass sich das Programm vielleicht nicht wie erwartet verhält. Alle EdScratch-Warnungen kannst du dir in diesem Dokument anschauen.
Experimentiere weiter:
- Ergänze den Block “Wait 2 seconds”.
- Teste das Programm erneut. Was passiert jetzt?
Edison fährt 2 Sekunden bei angegebener Geschwindigkeit vorwärts.
Im vorherigen Projekt haben wir mit Wiederholungen bzw. Schleifen gearbeitet. Hier soll Edison seine Fahraktionen endlos wiederholen.
- Programmiere eine endlose Schleife, mit der der Roboter jeweils 2 Sekunden vorwärts und rückwärts fährt. Zur Erinnerung: du kannst jedes Programm durch Drücken der rechteckigen Stopptaste beenden.
So fahren wir mit einer Schleife hin und her:
- Die endlose Schleife findest du in der Kategorie “Control” (Kontrollstrukturen).
Jetzt kommt etwas Musik hinzu:
- Während des Hin- und Herfahrens soll der Roboter diese kleine Melodie spielen:
- Das bedeutet, Edison führt zwei Aktionen “Fahren” und “Musik spielen” gleichzeitig aus. Kannst du diese Aufgabe lösen?
So lassen wir den Edison mit Musik hin- und herfahren:
- Um während einer Fahrt Musik zu spielen, benötigst du den Klammerblock “play music in background” (Spiele Musik im Hintergrund) aus der Kategorie “Sound”. In diesen Klammerblock kannst du nur Blöcke mit Noten einfügen.
- Das Spielen der Musik wird, wie die Fahraktionen auch, in einer Endlosschleife wiederholt.
Zum Abschluss programmieren wir ein Ereignis (engl. event). Ein Ereignis ist etwas, das während der Programmausführung passieren kann. Der Programmierer kann allerdings nicht im Voraus wissen, wann es passieren wird. Wenn das Ereignis (z.B. das Erkennen eines Hindernisses) eintritt, wird das Hauptprogramm (engl. main program) verlassen und ein Unterprogramm (engl. subroutine) gestartet. Nach dem Unterprogramm wird das Hauptprogramm an der Stelle der Unterbrechung wieder aufgenommen.
- Wenn vor dem Roboter ein Hindernis (z.B. eine Hand) auftaucht, soll er anhalten und 3 Sekunden Pause machen.
So haben wir das Ereignis programmiert:
- Ereignisblöcke findest du unter Kategorie “Events” (Ereignisse). Sie sehen aus wie Startblöcke. Wir verwenden den Ereignisblock “obstacle detected ahead” (Hindernis frontal von vorn erkannt)
- Damit die Hinderniserkennung funktioniert, muss der Sensor zu Hinderniserkennung eingeschaltet sein. Zur Erinnerung: Edison verwendet zur Hinderniserkennung Infrarot-LEDs und einen Infrarot-Empfänger. Wir verwenden den Block “turn obstacle detection beam on” (schalte Hinderniserkennung ein) aus der Kategorie “Sensing” (Sensoren).
- Wenn das Ereignis (ein Hindernis wird erkannt) eintritt, startet das Unterprogramm. Wir setzen beide Motoren auf “gestoppt” und behalten den Zustand 3 Sekunden lang. Dazu verwenden wir die Blöcke “stop both motors” und “wait 3 seconds”.
Vielleicht speicherst du dein Programm. Damit du später noch weißt, warum du dein Programm so geschrieben hast, fügst du Kommentare ein.
Kommentare sind Notizen, in denen der Programmierer Funktionen und Absichten beschreibt. Sie haben keinen Einfluss auf den Programmablauf, weil sie bei der Programmausführung übersprungen werden.
- Füge in deinem Programm ein paar Kommentare ein. Am besten verwendest du eine einfache und klare Umgangssprache.
Unser fertiges Programm mit Kommentaren (edison_musikereignis.ees) sieht so aus:
- Die Kommentarblöcke findest du unter Kategorie “Comment”. Klicke einfach auf den Block und füge deinen Text ein.
Was du bei diesem Projekt lernen kannst:
- Für Aktionen, die zeitlich nicht beschränkt sind, können wir Endlosschleifen verwenden.
- Mit EdScratch kannst du Programme erstellen, bei denen das Ausführen von Aktionen und das Spielen von Musik zeitgleich erfolgt.
- Während des Programmablaufs können Ereignisse (engl. events) eintreten. Der Programmierer kann nicht im Voraus wissen, wann es passieren wird. Wenn ein Ereignis (z.B. das Erkennen eines Hindernisses) eintritt, wird das Hauptprogramm (engl. main program) verlassen und ein Unterprogramm (engl. subroutine) gestartet. Nach dem Unterprogramm wird das Hauptprogramm an der Stelle der Unterbrechung wieder aufgenommen.
- In Kommentaren speicherst du Notizen zu deinem Programm. Darin beschreibst du z.B. Programmfunktionen und deine Absichten in einer einfachen klaren Sprache. Kommentare haben keinen Einfluss auf den Programmablauf, weil sie bei der Programmausführung übersprungen werden.