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.
6. Sensoren<br />
<strong>Programmieren</strong> <strong>von</strong> LEGO-MindStorms- <strong>Robotern</strong> <strong>mit</strong> <strong>NQC</strong><br />
Sensoren sind Fühler, wie für uns Menschen die Augen, die Nase oder die Hände, <strong>mit</strong> denen wir Dinge ertasten können.<br />
Das tolle an unserem Lego-Roboter ist, dass wir Sensoren an ihn anschließen können, und dass wir den Roboter auf die<br />
Sensoren reagieren lassen können.<br />
Bevor wir <strong>mit</strong> dem Einbinden <strong>von</strong> Sensoren in ein <strong>NQC</strong> - Programm beginnen können, müssen wir unseren Roboter etwas<br />
umbauen, indem wir einen Tast - Sensor hinzufügen. Baue zu diesem Zweck den Stoßfänger <strong>mit</strong> Einzelsensor an deinen<br />
Roboter an, so wie es auf den Seiten 26 bis 29 deiner CONSTRUCTOPEDIA beschrieben ist.<br />
Dein Roboter sollte dann wie folgt aussehen.<br />
Schließe den Taster an Eingang 1 des RCX an.<br />
6.1. Abfragen eines Sensors<br />
Wir wollen <strong>mit</strong> einem einfachen Programm beginnen, bei dem der Roboter geradeaus fährt, bis er gegen ein Hindernis<br />
stößt:<br />
task main()<br />
{<br />
SetSensor(SENSOR_1,SENSOR_TOUCH); //definiert Sensor an Eingang 1<br />
OnFwd(OUT_A+OUT_C);<br />
//der Roboter fährt geradeaus<br />
until (SENSOR_1 == 1);<br />
//bis er gegen etwas stößt,<br />
Off(OUT_A+OUT_C);<br />
//dann wird er abgeschaltet<br />
}<br />
In diesem Programm gibt es zwei Zeilen <strong>mit</strong> neuen Befehlen, die wir uns einmal genauer ansehen wollen:<br />
Die erste Zeile des Programms sagt dem RCX welche Art <strong>von</strong> Sensor wir verwenden. SENSOR_1 ist die Nummer des Eingangs,<br />
<strong>mit</strong> dem wird den Sensor verbunden haben. Die beiden anderen Eingänge heißen SENSOR_2 und SENSOR_3.<br />
SENSOR_TOUCH sagt dem RCX, dass wir einen Taster verwenden (touch = engl. berühren). Für den Lichtsensor würden wir<br />
SENSOR_LIGHT verwenden.<br />
Nachdem wir den Sensor- Typ festgelegt haben, schaltet das Programm beide Motoren ein und der Roboter fährt vorwärts.<br />
Der Befehl until (engl. = so lange bis) ist sehr leistungsfähig. Hier unterbricht der Programmablauf, bis die Bedingung<br />
innerhalb der Klammern ( ) zutrifft.<br />
Die hier gezeigte Bedingung besagt, dass der Wert <strong>von</strong> SENSOR_1 = 1 sein muß. Das bedeutet, dass der Sensor gedrückt<br />
wurde. Solange der Sensor nicht betätigt wurde, ist der Wert = 0. Daher wartet das Programm hier, bis der Sensor gedrückt<br />
wurde, und weil die beiden Motoren zuvor eingeschaltet wurden, läuft der Roboter geradeaus weiter. Sobald der Taster<br />
betätigt wird, wird der Wert <strong>von</strong> SENSOR_1 = 1 und da<strong>mit</strong> die Bedingung innerhalb der Klammern ( )wahr, der<br />
Programmablauf wird fortgesetzt und kommt zum Befehl Off(OUT_A+OUT_C); der beide Motoren abschaltet. Da<strong>mit</strong><br />
endet auch das Programm. Du erkennst dies daran, dass das Männchen in der Anzeige des RCX stehen bleibt.<br />
- 15 -