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.

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 -

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!