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.
<strong>Programmieren</strong> <strong>von</strong> LEGO-MindStorms- <strong>Robotern</strong> <strong>mit</strong> <strong>NQC</strong><br />
#define turn_right(s,t) SetPower(OUT_A+OUT_C,s);OnFwd(OUT_A);OnRev(OUT_C);Wait(t);<br />
#define turn_left(s,t) SetPower(OUT_A+OUT_C,s);OnRev(OUT_A);OnFwd(OUT_C);Wait(t);<br />
#define forwards(s,t) SetPower(OUT_A+OUT_C,s);OnFwd(OUT_A+OUT_C);Wait(t);<br />
#define backwards(s,t) SetPower(OUT_A+OUT_C,s);OnRev(OUT_A+OUT_C);Wait(t);<br />
task main()<br />
{<br />
forwards(3,200); //ruft Makro forwards (=vorwärts) <strong>mit</strong> den Werten 3 und 200 auf<br />
turn_left(7,160); //ruft Makro turn_left (=drehe links) <strong>mit</strong> den Werten 7 und 160 auf<br />
forwards(7,100); //ruft Makro forwards (=vorwärts) <strong>mit</strong> den Werten 7 und 100 auf<br />
backwards(7,200); //ruft Makro backwards (=rückwärts) <strong>mit</strong> den Werten 7 und 200 auf<br />
forwards(7,100); //ruft Makro forwards (=vorwärts) <strong>mit</strong> den Werten 7 und 100 auf<br />
turn_right(7,160); //ruft Makro turn_right (=drehe rechts) <strong>mit</strong> den Werten 7 und 160 auf<br />
forwards(3,200); //ruft Makro forwards (=vorwärts) <strong>mit</strong> den Werten 3 und 200 auf<br />
Off(OUT_A+OUT_C);<br />
}<br />
Makros sind auch deshalb vorteilhaft, weil sie das Programm klein und da<strong>mit</strong> übersichtlicher machen. Du hast es da<strong>mit</strong> bei<br />
Änderungen leichter, wenn du zum Beispiel die Anschlüsse der Motoren änderst, dann genügt es die Makros zu verändern.<br />
Der Rest deines Programmes bleibt.<br />
7.5. Zusammenfassung<br />
In diesem Kapitel lernten wir die Verwendung <strong>von</strong> Aufgaben (Tasks), Unterprogrammen, Inline- Funktionen und Makros.<br />
Je nach Anwendung hat jedes seine Vor- und Nachteile.<br />
Tasks können gleichzeitig ablaufen und nebeneinander die unterschiedlichsten Sachen erledigen.<br />
Unterprogramme haben den Vorteil, dass derselbe Programmablauf <strong>von</strong> verschiedenen Stellen aus aufgerufen werden kann,<br />
aber nur einmal Speicherplatz belegt. Dies ist aber auch zugleich ihr größter Nachteil: Wenn das selbe Unterprogramm<br />
gleichzeitig <strong>von</strong> verschiedenen Stellen (insbesondere Tasks, die ja nebeneinander ablaufen) aufgerufen wird, gibt es<br />
Probleme.<br />
Inline- Funktionen funktionieren im Prinzip wie Unterprogramme, du brauchst die Befehle nur einmal einzugeben.<br />
Intern im RCX wird diese Befehlsabfolge an all die Stellen kopiert, <strong>von</strong> wo aus die Inline- Funktion aufgerufen wird.<br />
Dadurch können sie, im Gegensatz zu Unterprogrammen, parallel ablaufen. Sie benötigen deshalb aber auch mehr<br />
Speicherplatz im RCX.<br />
Im Gegensatz zu Unterprogrammen kann man Inline-Funktionen auch ein (oder mehrere) Argument(e) (= Wert(e)) <strong>mit</strong><br />
übergeben.<br />
Schließlich haben wir Makros kennengelernt. Sie eignen sich insbesondere für kurze Programmabschnitte, die <strong>von</strong><br />
verschiedenen Stellen aus aufgerufen werden sollen. Da den Makros beim Aufruf auch mehrere Werte <strong>mit</strong> übergeben<br />
werden können, sind sie für die Programmierung besonders interessant.<br />
Bravo !!<br />
Du hast dich nun bis hierher durchgearbeitet und da<strong>mit</strong> die Grundlagen für die Programmierung <strong>mit</strong> <strong>NQC</strong> gelernt.<br />
Die anderen Kapitel dieser Anleitung sind für spezielle Anwendungen gedacht. Du mußt sie also nicht sofort lesen. Aber<br />
blättere ruhig einmal weiter. Sicher findest du interessante Anregungen für Deine LEGO- Modelle!<br />
- 21 -