22.11.2013 Aufrufe

Programmieren von LegoMindstorms-Robotern mit NQC

Programmieren von LegoMindstorms-Robotern mit NQC

Programmieren von LegoMindstorms-Robotern mit NQC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

#define MOVE_TIME 200<br />

#define TURN_TIME 160<br />

<strong>Programmieren</strong> <strong>von</strong> LEGO-MindStorms- <strong>Robotern</strong> <strong>mit</strong> <strong>NQC</strong><br />

task main()<br />

{<br />

OnFwd(OUT_A+OUT_C);<br />

Wait(MOVE_TIME);<br />

OnRev(OUT_C);<br />

Wait(TURN_TIME);<br />

Off(OUT_A+OUT_C);<br />

}<br />

Die ersten beiden Zeilen definieren zwei Konstanten. Diese können vom RCX während des gesamten Programmablaufs<br />

verwendet werden.<br />

Die Verwendung <strong>von</strong> Konstanten ist aus zwei Gründen zu empfehlen:<br />

• Erstens wird das Programm übersichtlicher und einfacher lesbar, da du deinen Konstanten logische Namen geben<br />

kannst und da RCX-Command Center den Konstanten eine eigene Farbe gibt.<br />

In unserem Beispiel heißen die Namen MOVE_TIME = Fahrzeit und TURN_TIME = Drehzeit.<br />

• Zweitens ist die Verwendung <strong>von</strong> Konstanten besonders bei größeren Programmen sinnvoll, da du diese Werte bereits<br />

am Beginn deines Programmes festlegen kannst, wo du sie viel leichter findest, als irgendwo zwischen den vielen<br />

anderen Anweisungen.<br />

Wie du in Kapitel 6 sehen wirst, kannst du außer Konstanten auch andere Dinge definieren.<br />

3.2. Befehle wiederholen<br />

Wir wollen jetzt ein Programm schreiben, das den Roboter in einem Quadrat fahren läßt.<br />

Fahren in einem Quadrat bedeutet: der Roboter fährt ein Stück gerade, macht eine 90º-Drehung, fährt wieder ein Stück<br />

gerade, macht wieder eine 90º-Drehung , usw. Wir könnten die in unserem vorherigen Programm verwendeten<br />

Befehlszeilen viermal wiederholen, aber dieses kann man <strong>mit</strong> der repeat- Anweisung viel einfacher gestalten.<br />

(repeat = engl. für wiederholen)<br />

#define MOVE_TIME 200<br />

#define TURN_TIME 160<br />

task main()<br />

{<br />

repeat(4)<br />

{<br />

OnFwd(OUT_A+OUT_C);<br />

Wait(MOVE_TIME);<br />

OnRev(OUT_C);<br />

Wait(TURN_TIME);<br />

}<br />

Off(OUT_A+OUT_C);<br />

}<br />

Falls dein Roboter kein schönes Quadrat gefahren ist, verändere doch die Werte für MOVE_TIME und TURN_TIME in den<br />

ersten beiden Zeilen.<br />

Die Zahl hinter der repeat- Anweisung in Klammern ( ), zeigt an, wie oft etwas wiederholt werden muß.<br />

Die Anweisungen, die wiederholt werden müssen, werden zwischen Klammern { } gesetzt, genau so wie die Anweisungen<br />

in einer task.<br />

Beachte bitte, dass im oben gezeigten Programm auch die Anweisungen einrücken. Dieses ist nicht notwendig, aber es<br />

macht das Programm lesbarer. Als abschließendes Beispiel lassen wir den Roboter 10mal im Quadrat fahren.<br />

Hier ist das Programm:<br />

- 9 -

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!