Programmieren von LegoMindstorms-Robotern mit NQC
Programmieren von LegoMindstorms-Robotern mit NQC
Programmieren von LegoMindstorms-Robotern mit NQC
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 -