Einführung in die Programmierung des NXT Brick mit NXC · 2016-06-15 · Programmierung des NXT...
Transcript of Einführung in die Programmierung des NXT Brick mit NXC · 2016-06-15 · Programmierung des NXT...
Angewandte Informationstechnologie
LEGO Mindstorms NXT
Einführung in die Programmierungdes NXT Brick mit NXC
Dr. Leander Brandl 2010
it.brgkepler.at
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl 2010 - it.brgkepler.at - Stand: 14.01.2010 Seite 2
Programmierung des NXT Brick mit NXC
1 Allgemeines
1.1 LEGO Mindstorms NXT
Im Oktober 2006 hat LEGO mit Mindstorms NXT eine neue Generation von LEGO Robotern auf den Markt gebracht. Begleitend zur weltweiten Verbreitung von LEGO Mindstorms haben diese Roboter längst auch in Schulen einzug gehalten.
Schülerinnen und Schülern können mit diesen Möglichkeiten und damit verbundenen Lernkonzepten Naturwissenschaften, Technik, Konstruktion, Programmierkenntnisse und Mathematik durch selbständiges Arbeiten vermittelt werden.
Zusätzliche Motivation erfährt die Konstruktion und Programmierung von Robotern durch die Teilnahme an Wettbewerben, wie der First Lego League oder dem RoboCup Junior.
1.2 Erstellung von Programmen mit der grafischen Oberfläche NXT
Die mitgelieferte Software ermöglicht die Erstellung von Programmen für NXT Roboter mit einer grafischen Oberfläche. In einer übersichtlichen Darstellung können Ereignisse (Auswertung von Sensoren) und Aktionen (Steuern von Motoren) miteinander verknüpft und auch komplexe Programmabläufe realisiert werden.
Die Programme werden in einer Art Baukastensystem zusammengestellt, die Bedienung kann intuitiv erfolgen und es werden keine Programmierkenntnisse vorausgesetzt. Die sehr übersichtliche und einfach zu bedienende Software bietet zwei Programmierbereiche für Einsteiger und Fortgeschrittene.
Abbildung 1.2.1 - Oberfläche der grafischen Programmiersoftware LEGO Mindstorms
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl 2010 - it.brgkepler.at - Stand: 14.01.2010 Seite 3
Programmierung des NXT Brick mit NXC
Abbildung 1.4.1 - Anschluss- und Tastenbelegung des NXT Brick
1.3 Die Programmiersprache NXC
Möchte man den gesamten Funktionsumfang des NXT Brick nutzen, so muss man auf Programmiersprachen und entsprechende Compiler zurückgreifen mit denen man Programmcode direkt für den im NXT Brick enthaltenen Mikrocontroller erstellen kann.
Neben kommerziellen Produkten haben sich auch einige Softwareentwickler daran gemacht eigene Lösungen zur Erstellung von Programmen für den NXT Brick in verschiedenen Programmiersprachen zu erstellen und bieten diese im Internet kostenlos an.
Die Programmiersprache NXC - Not eXactly C - wurde von John Hansen speziell für die LEGO Roboter entwickelt und basiert in den Grundstrukturen auf der Programmiersprache C.
1.4 Der NXT Brick
Der NXT Brick verfügt über 4 Eingänge und 3 Ausgänge. An den Eingängen können Sensoren angeschlossen werden, die Ausgänge werden verwendet um Motoren anzuschließen. Zusätzlich steht ein USB-Anschluss zum Übertragen von Programmen von einem Computer zum NXT Brick zur Verfügung.
Die Bedienung des NXT Brick erfolgt über die 4 Tasten unter dem Display. Nach dem Übertragen von eigenen Programmen stehen diese unter dem Menüpunkt "My Programs" zur Verfügung, können mit den Pfeiltasten ausgewählt und mit der orangen Taste gestartet werden.
Die eigentliche Arbeit beim Schreiben von Programmen erfolgt in der integrierten Entwicklungsumgebung Bricx Command Center.
Diese steht unter der folgenden Adresse zum Download bereit: http://bricxcc.sourceforge.net
Die vorliegende Einführung soll dazu dienen auch ohne Vorkenntnisse einer Programmiersprache das Erstellen von Programmen für den NXT Brick mit NXC zu erlernen.
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl 2010 - it.brgkepler.at - Stand: 14.01.2010 Seite 4
Programmierung des NXT Brick mit NXC
1.6 Die Sensoren
An den Eingängen des NXT Brick können unterschiedliche Sensoren angeschlossen werden. Mittlerweile gibt es zu den von LEGO gelieferten Sensoren auch eine große Anzahl, die von anderen Herstellern entwickelt und mit dem NXT Brick verwendet werden können.
Die genaue Funktion und die Einbindung der verschiedenen Senoren in eigene Programme wird in späterer Folge beschrieben.
Abbildung 1.6.1 - Standard-Sensoren von LEGO Mindstorms
Lichtsensor Geräuschsensor
Berührungssensor Abstandsensor
1.5 Die Motoren
Für LEGO Mindstorms wurden neue Servomotoren entwickelt. Diese verfügen auch über integrierte Rotationssensoren, die das genaue Messen von Geschwindigkeiten und Entfernungen ermöglichen und an den NXT Brick zurückmelden. Die Motoren können sehr präzise in 1° - Schritten gesteuert werden.
Abbildung 1.5.1 - Aufbau eines Motors
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl 2010 - it.brgkepler.at - Stand: 14.01.2010 Seite 5
Programmierung des NXT Brick mit NXC
2 Das erste Programm
2.1 Die Programmieroberfläche BricxCC
Zur Erstellung von Programmen für den NXT Brick bietet sich die Entwicklungsoberfläche Bricx Command Center aufgrund ihrer übersichtlichen Oberfläche und umfangreichen Funktionalität für den Einsatz in der Schule sehr an.
Wird dieses Programm gestartet, so muss zunächst angegeben werden welcher programmierbare Roboter-Baustein zum Einsatz kommt (hier NXT), über welche Schnittstelle dieser am Computer angeschlossen ist (hier USB) und welche Firmware auf dem Roboter-Baustein installiert ist.
Abbildung 2.1.1 - Die Programmieroberfläche Brixc Command Center mit den wichtigsten Bedienelementen
Compilieren des Programms Programm auf NXT übertragenNeues Programm Öffnen Speichern Texteditor
Zusätzlich zum Editor in dem der Programmcode geschrieben wird, kann damit das erstellte Programm mit dem Klick auf bereitgestellte Schaltflächen compiliert (in einen für den NXT vertändlichen Code übersetzt) und auch über die USB-Schnittstelle zum NXT Brick übertragen werden.
Abbildung 2.1.1 - Einstellungen beim Start des Bricx Command Centers
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl 2010 - it.brgkepler.at - Stand: 14.01.2010 Seite 6
Programmierung des NXT Brick mit NXC
Quellcode 2.2.1 - Programmstruktur und Steuern der Motoren an den Ausgängen A und B
2.2 Grundstruktur eines NXC-Programms und Steuern von Motoren
An den Ausgängen A, B und C können die Motoren angeschlossen werden. Bei den ersten Beispielen kommt ein einfaches Robotermodell mit zwei Motoren zum Einsatz, die an den Ausgängen A und B angeschlossen sind.
Programme in NXC bestehen aus Tasks. Jedes Programm muss zumindest einen Task mit dem Namen main() beinhalten. Alle Anweisungen, die zu diesem Task gehören, werden mit geschwungenen Klammern zusammengefasst. Jede Anweisung wird in NXC mit einem Strichpunkt beendet!
Die Funktionen OnFwd(Ausgang, Leistung) und OnRev(Ausgang, Leistung)
Zum Steuern der Motoren stehen die beiden Funktionen OnFwd(Ausgang, Leistung) und OnRev(Ausgang, Leistung) zur Verfügung. Als Ausgang können entweder ein Ausgang (OUT_A, OUT_B oder OUT_C) oder gleichzeitig mehrere Ausgänge (OUT_AB, OUT_AC, OUT_BC oder OUT_ABC) angegeben werden. Die Leistung, aus der sich die Drehgeschwindigkeit ergibt, kann mit ganzen Zahlen aus dem Bereich von 0 bis 100 zwischen 0% und 100% festgelegt werden.
Die Funktion Wait(Millisekunden)
Soll das Programm die zuvor angegebenen Anweisungen für eine bestimmte Zeit ausführen, so kann dies an jeder beliebigen Stelle mit der Funktion Wait(Millisekunden) erreicht werden.
Die Funktion Off(Ausgang)
Zum Ausschalten der Ausgänge verwendet man die Funktion Off(Ausgang). Die möglichen Werte für den Parameter Ausgang sind: OUT_A, OUT_B, OUT_C, OUT_AB, OUT_AC, OUT_BC oder OUT_ABC
Zum Programmcode:
Zeile 3: Der Motor an Ausgang A dreht sich mit 50% Leistung vorwärts
Zeile 4: Der Motor an Ausgang B dreht sich mit 50% Leistung vorwärts
Zeile 5: Das Programm wartet an dieser Stelle für zwei Sekunden, der Roboter fährt also zwei Sekunden rückwärts
Zeile 6: Der Motor an Ausgang A dreht sich mit 20% Leistung rückwärts
Zeile 7: Der Motor an Ausgang B dreht sich mit 20% Leistung rückwärts
Zeile 8: Das Programm wartet an dieser Stelle für drei Sekunden, der Roboter fährt also drei Sekunden rückwärts
Zeile 9: Die beiden Ausgänge A und B werden abgeschaltet - der Roboter bleibt stehen.
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl - it.brgkepler.at Anhang
Programmierung des NXT mit NXC
2.3 Kompilieren des Programms und Übertragen auf den Roboter
Nach dem Schreiben des Programmcodes im Editor muss dieser in einen für den NXT Brick verständlichen Code übersetzt werden. Dieser Vorgang wird von einem Compiler ausgeführt und im Brixc Command Center durch einen Klick auf die Schaltfläche mit den beiden Zahlrädern veranlasst.
Aufgabe 2.1
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl 2010 - it.brgkepler.at - Stand: 14.01.2010 Seite 8
Programmierung des NXT Brick mit NXC
3 Steuern von Motoren und Wiederholung von Programmteilen
3.1 Drehung
Soll sich der Roboter drehen, so kann dies durch Ansteuerung beider Motoren in entgegengesetzter Richtung oder durch Einschalten nur eines Motors erfolgen. Je nach Konstruktion und Aufgabenstellung wird entweder die eine oder andere Möglichkeit zum Einsatz kommen.
Quellcode 3.1.1 - Drehung des Roboters um 90°
Zum Programmcode:
Zeile 3 - 4: Beide Motoren fahren für zwei Sekunden mit Leistung 50% vorwärts
Zeile 5 - 6: Nur der Motor an Ausgang A fährt für 400 Millisekunden vorwärts
Zeile 7 - 8: Beide Motoren fahren wieder für zwei Sekunden mit Leistung 50% vorwärts
Zeile 9: Die Ausgänge A und B werden abgeschaltet
Die Kombination der Werte Leistung 50% und 400 Millisekunden ergibt beinahe eine Drehung um 90°. Sollte dies nicht der Fall sein, so können die Werte für die Leistung und die Warte-Zeit in Zeile 5 und 6 geändert werden.
Aufgabe 3.1
Aufgabe 3.2
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl 2010 - it.brgkepler.at - Stand: 14.01.2010 Seite 9
Programmierung des NXT Brick mit NXC
3.2 Wiederholung von Programmteilen mit repeat()
Sollen verschiedene Anweisungen in einem Programm mehrmals hintereinander ausgeführt werden, so müssen diese nicht entsprechend oft hintereinander im Programmcode stehen. Diese Aufgabe übernimmt das repeat - Statement.
Quellcode 3.2.1 - Wiederholung von Programmteilen mit dem repeat-Statement
Zum Programmcode:
Zeile 3: Mit dem repeat-Statement wird ein Bereich eingeleitet, der in der Folge mehrmals behandelt werdensoll. Der Wert in den runden Klammern gibt an, wie oft der folgende Anweisungs-Block wiederholt wird.
Zeile 4 - 9: Der Anweisungsblock, der zwischen den beiden geschwungenen Klammern steht wird 2 Malausgeführt.
Aufgabe 3.3
Aufgabe 3.4
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl 2010 - it.brgkepler.at - Stand: 14.01.2010 Seite 1 0
Programmierung des NXT Brick mit NXC
3.3 Motoren um vorgegebenen Winkel drehen
Bei der Steuerung der Motoren ist es nicht nur möglich diese mit unterschiedlichen Geschwindigkeiten vorwärts und rückwärts drehen zu lassen, sondern diese auch sehr exakt zu positionieren.
Quellcode 3.3.1 - Drehung der Motoren um einen vorgegebenen Winkel
Die Funktion RotateMotor(Ausgang, Leistung, Drehwinkel)
Zum Drehen der Motoren um einen bestimmten Winkel verwendet man die Funktion RotateMotor(Ausgang, Leistung, Drehwinkel).
Die möglichen Werte für die Parameter Ausgang und Leistung entsprechen denen der Funktionen OnFwd() und OnRev(). Mit dem Parameter Drehwinkel wird der Winkel angegeben, um den sich der Motor drehen soll: positive Werte - Drehung vorwärts, negative Werte - Drehung rüchwärts
Zum Programmcode:
Zeile 3: Der Motor an Ausgang A dreht sich mit der Leistung 20% eine Volldrehung (360°) vorwärts.
Zeile 4: Der Motor an Ausgang B dreht sich mit der Leistung von 50% um 120° rückwärts.
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl 2010 - it.brgkepler.at - Stand: 14.01.2010 Seite 1 1
Programmierung des NXT Brick mit NXC
4 Sensoren, Entscheidungsabfragen und Textausgabe am Display
4.1 Kontinuierliches Ablaufen von Programmen
Möchte man, dass Programme nicht wie bei den bisherigen Beispielen ein einziges Mal durchlaufen, so kann man dies mit einer Endlosschleife innerhalb des Tasks main() erreichen. Diese Schleife läuft solange das Programm im NXT Brick aktiv ist und wir am NXT Brick mit dem Stop-Button beendet.
Quellcode 4.1.1 - Endlosschleife in einem Programm für den NXT Brick
Die while - Schleife
Soll ein Anweisungsblock solange ausgeführt werden wie eine bestimmte Bedingung erfüllt ist, so verwendet man die while - Schleife. Nach dem Schlüsselwort while wird in runden Klammern eine Bedingung angegeben. Alle Anweisungen, die in dieser Schleife ausgeführt werden sollen, sind mit geschwungenen Klammern zusammengefasst.
Zum Programmcode:
Zeile 3: Beginn der while-Schleife mit der Bedingung (1==1). Diese ist immer erfüllt, die Schleife läuft endlos.
Zeile 5 - 9: Der Roboter fährt ein kleines Kreisstücke und wartet anschließend eine Sekunde.
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl 2010 - it.brgkepler.at - Stand: 14.01.2010 Seite 1 2
Programmierung des NXT Brick mit NXC
In diesem Programm wird zunächst festgelegt, dass an Eingang 1 ein Berührungssensor angeschlossen ist. In einer Endlosschleife fährt der Roboter gerade aus und macht bei einer Berührung eine Ausweichbewegung nach hinten bevor dieser wieder vorwärts fährt.
Die Funktion SetSensorTouch(Eingang)
Mit dieser Funktion legt man fest, dass einem Eingang ein Berührungssensor angeschlossen ist. Der Parameter Eingang kann die Werte IN_1, IN_2, IN_3 oder IN_4 annehmen.
Die Funktion Sensor(Eingang)
Möchte man auf die Werte, die ein Sensor liefert zugreifen, so verwendet man die Funktion Sensor(). Als Parameter übergibt man den jeweiligen Eingang IN_1, IN_2, IN_3 oder IN_4. Ist an einem Eingan ein Berührungssensor angeschlossen, so liefert die Funktion Sensor() die Werte 0 (Taster offen) oder 1 (Taster geschlossen) zurück.
Die Entscheidungsabfrage if()
Soll das Programm selbstständig Entscheidungen treffen, so steht dafür die if - Abfrage zur Verfügung. Hinter dem Schlüsselwort if wird in runden Klammern eine Bedingung angegeben. Alle Anweisungen, die ausgeführt werden, wenn die Bedingung erfüllt ist, werden mit geschwungenen Klammern zusammengefasst. Sollen Anweisungen ausgeführt werden, wenn die Bedingung nicht erfüllt ist, so werden diese hinter dem Schlüsselwort else angeführt.
Quellcode 4.2.1 - Ausweichmanöver des Roboters bei eine Berührung mit der Stoßstange an der Vorderseite
4.2 Der Berührungssensor
Die Sonsoren werden an einem der vier Eingänge des NXT Brick angschlossen. Bevor die Werte der Sonsoren im Programm verwendet werden können, muss gestgelegt werden, welcher Sensor an einem Eingang angeschlossen ist.
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl 2010 - it.brgkepler.at - Stand: 14.01.2010 Seite 1 3
Programmierung des NXT Brick mit NXC
Vergleichsoperatoren für Bedingungen
In den Bedingungen der if - Abfrage und einer while - Schleife können folgende Operatoren für den Vergleich von zwei Werten verwendet werden:
== ... ist gleich if (Sensor(IN_1) == 1) { ... }
!= .... ungleich if (Sensor(IN_3) != 1) { ... }
< .... kleiner if (Sensor(IN_2) < 4) { ... }
> .... größer if (Sensor(IN_4) > 20) { ... }
<= ... kleiner gleich if (Sensor(IN_4) <= 10) { ... }
>= ... größer gleich if (Sensor(IN_2) >= 25) { ... }
Verknüpfungsoeratoren für Bedingungen
Sollen in einer Bedingung mehrere Bedingungen verknüpft werden, so gibt es dafür die beiden Operatoren && und ||. Bei einer Verknüpfung mit && (und) ist die Gesamtbedingung erfüllt, wenn beide Bedingung erfüllt sind. Bei einer Verfknüpfung mit || (oder) gilt die Gesammtbedingung dann als erfüllt, wenn entweder die eine oder die andere Bedingung erfüllt ist.
Verknüpfung mit && (und) if ( (Sensor(IN_1) == 1) && (Sensor(IN_2) ==1) ) { ... }
Verknüpfung mit || (oder) if ( (Sensor(IN_1) == 1) || (Sensor(IN_2) ==1) ) { ... }
Zum Programmcode:
Zeile 3: Am Eingang 1 ist ein Berührungssensor angeschlossen.
Zeile 4: Die Aufgaben des Roboters laufen in einer Endlosschleife.
Zeile 6: Beide Motoren fahren mit der Leistung 40% vorwärts.
Zeile 7: Entscheidungsabfrage: Wenn die Funktion Sensor() den Wert 1 zurückliefert, dann fährt der Roboterdas Ausweichmanöver.
Zeile 9 - 11: Das Ausweichmanöver: Der Roboter fährt mit unterschiedlichen Geschwindigkeiten beider Motoren für2 Sekunden nach hinten.
Aufgabe 4.1
Aufgabe 4.2
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl 2010 - it.brgkepler.at - Stand: 14.01.2010 Seite 1 4
Programmierung des NXT Brick mit NXC
4.3 Der Lichtssensor
Wird ein Lichtsensor an einem Eingang angeschlossen so kann die Intensität des reflektierten Lichts aus dem Sensor ausgelesen werden. Im folgenden Beispiel fährt der Roboter mit einem nach unten gerichteten Lichtsensor auf einer weißen Fläche in Richtung eines schwarzen Strichs. Ist der Lichtsensor über dem schwarzen Strich, so soll der Roboter anhalten.
Quellcode 4.3.1 - Abtasten der Oberfläche mit einem Lichtsensor
Die Funktion SetSensorLight(Eingang)
Mit dieser Funktion legt man fest, dass einem Eingang ein Lichtsensor angeschlossen ist. Der Parameter Eingang kann die Werte IN_1, IN_2, IN_3 oder IN_4 annehmen.
Die Funktion Sensor(Eingang)
Möchte man auf die Werte, die ein Sensor liefert zugreifen, so verwendet man auch bei einem Lichtsensor die Funktion Sensor(). Als Parameter übergibt man den jeweiligen Eingang IN_1, IN_2, IN_3 oder IN_4. Im Fall eines Lichtsensors liefert die Funktion Sensor() die Werte zwischen 0 (minimale Intensität) und 100 (maximale Intensität) zurück.
Zum Programmcode:
Zeile 3: Beide Motoren fahren mit der Leistung 40% vorwärts.
Zeile 4: Am Eingang 1 ist ein Lichtsensor angeschlossen.
Zeile 5: In einer Endlosschleife wertet das Programm den Wert des Lichtsensors aus.
Zeile 7: Entscheidungsabfrage: Wenn der Wert des Lichtsensors kleiner als 40 ist, dann werden beide Ausgängeabgeschaltet.
Aufgabe 4.3
Aufgabe 4.4
Aufgabe 4.5
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl 2010 - it.brgkepler.at - Stand: 14.01.2010 Seite 1 5
Programmierung des NXT Brick mit NXC
4.4 Ausgabe von Text und Zahlen
Für die Ausgabe von Zahlenwerten und Text stehen unter NXC zwei Funktionen zur Verfügung. Diesen werden die Position der Ausgabe und der auszugebende Text bzw. Wert übergeben. Das folgende Programm zeigt kontinuierlich den Wert eines angeschlossenen Lichtsensors an.
Quellcode 5.1.1 - Ausgabe von Text und Zahlen am Display
Die Funktion TextOut(X-Koordinate, Zeile, Text)
Mit dieser Funktion wird Text am Display ausgegeben. Der Wert für die X-Koordinate kann zwischen 0 und 99 liegen und für den Parameter Zeile stehen die Werte LCD_LINE1, LCD_LINE2, ... , LCD_LINE8 zur Verfügung. Der auszugebende Text wird als Zeichenkette (String) übergeben und muss zwischen zwei doppelten Anführungszeichen stehen.
Die Funktion NumOut(X-Koordinate, Zeile, Zahl)
Möchte man Zahlenwerte am Display ausgeben, so müssen diese zuerst in Zeichenketten (Strings) umgewandelt werden. Dies übernimmt die Funktion NumOut(), der man die Startposition und den anzuzeigenden Zahlenwert übergibt.
Zum Programmcode:
Zeile 3: Die Zeichenkette "Lichtsensor: " wird in der Zeile 1 und der X-Koordinate 0 ausgegeben.
Zeile 4: Am Eingang 1 ist ein Lichtsensor angeschlossen.
Zeile 7: Der Zahlenwert, den die Fuktion Sensor(IN_1) zurückliefert, wird in Zeile 1 und der X-Koordinate 76 angezeigt. Die X-Koordinate 76 gibt hier die Position nach der Zeichenkette "Lichtsensor: " an.
Aufgabe 4.6
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl - it.brgkepler.at Anhang
Programmierung des NXT mit NXC
Anghang A - Referenz der NXC Programmierstrukturen und allgemeine Funktionen
Grundstrkutur
Anweisung 1; Anweisung 2; ...
Wiederholung eines Anweisungsblockes
Anweisung 1; Anweisung 2; ...
x gibt die Anzahl der Wiederholungen an
Endlosschleife mit while
Anweisung 1; Anweisung 2; ...
Entscheidungsabfrage mit if
Anweisung 1; Anweisung 2; ...
Anweisung 1; Anweisung 2; ...
Wait(Millisekunden)
Der Programmablauf wird an dieser Stelle angehalten
Millisekunden: ganze Zahl
TextOut(X-Koordinate, Zeile, Text)
Ausgabe einer Zeichenkette an einer bestimmten Position am Display
X-Koordinate: ganzzahliger Wert zwischen 0 und 99
Zeile: LCD_LINE1, LCD_LINE2, ... , LCD_LINE8
Text: Zeichenkette, begrenzt von doppelten Anführungszeichen (z. B. "Hallo NXT!")
NumOut(X-Koordinate, Zeile, Zahl)
Ausgabe eines Zahlenwerts an einer bestimmten Position am Display
X-Koordinate: ganzzahliger Wert zwischen 0 und 99
Zeile: LCD_LINE1, LCD_LINE2, ... , LCD_LINE8
Zahl: Zahlenwert oder Name einer Variable, die einen Zahlenwert beinhaltet
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl - it.brgkepler.at Anhang
Programmierung des NXT mit NXC
Anhang B - Referenz der NXT-spezifischen Funktionen Motoren in NXC
OnFwd(Ausgang, Leistung)
Vorwärtsbewegung der Motoren mit variabler Geschwindigkeit zwischen 0% und 100%
Ausgang: OUT_A, OUT_B, OUT_C, OUT_AB, OUT_AC, OUT_BC, OUT_ABC
Leistung: ganze Zahl 0 - 100
OnRev(Ausgang, Leistung)
Rückwärtsbewegung der Motoren mit variabler Geschwindigkeit zwischen 0% und 100%
Ausgang: OUT_A, OUT_B, OUT_C, OUT_AB, OUT_AC, OUT_BC, OUT_ABC
Leistung: ganze Zahl 0 - 100
RotateMotor(Ausgang, Leistung, Drehwinkel)
Drehung eines Motors um einen vorgegebenen Winkel
Ausgang: OUT_A, OUT_B, OUT_C, OUT_AB, OUT_AC, OUT_BC, OUT_ABC
Leistung: ganze Zahl 0 - 100
Drehwinkel: ganze Zahl, positiver Wert - Vorwärtsdrehung, negativer Wert - Rückwärtsdrehung
Off(Ausgang)
Abschalten der Ausgänge
Ausgang: OUT_A, OUT_B, OUT_C, OUT_AB, OUT_AC, OUT_BC, OUT_ABC
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl 2010 - it.brgkepler.at - Stand: 14.01.2010 Seite 1 8
Programmierung des NXT Brick mit NXC
Anhang C - Referenz der NXT-spezifischen Funktionen Sensoren in NXC
SetSensorTouch(Eingang)
An dem angegebenen Eingang ist ein Berührungssensor angschlossen
Eingang: IN_1, IN_2, IN_3, IN_4
SetSensorLight(Eingang)
An dem angegebenen Eingang ist ein Lichtsensor angschlossen
Eingang: IN_1, IN_2, IN_3, IN_4
Sensor(Eingang)
Diese Funktion liefert den Wert des Sensor am jeweiligen Eingang zurück
Eingang: IN_1, IN_2, IN_3, IN_4
Rückgabewert bei einem Berührungssensor: 0 (Taster offen) oder 1 (Taster geschlossen)
Rückgabewert bei einem Lichtsensor: 0 (minimale Intensität) bis 100 (maximale Intensität)
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl - it.brgkepler.at Anhang
Programmierung des NXT mit NXC
Anhang D - Aufgabensammlung
Aufgabe 2.1 (Roboter mit 2 Motoren)
Erstelle ein Programm, mit dem der Roboter fünf Sekunden mit einer Leistung von 50% rückwärts und anschließend mit einer Leistung von 30% zwei Sekunden vorwärts fährt.
Aufgabe 3.1 (Roboter mit 2 Motoren)
Erstelle ein Programm, mit dem der Roboter aus Kapitel 2 drei Sekunden vorwärts fährt, dann am Stand umdreht und anschließend wieder an den Ausgangspunkt zurückkehrt.
Aufgabe 3.2 (Roboter mit 2 Motoren)
Erstelle ein Programm, mit dem der Roboter aus Kapitel 2 ein Quadrad abfährt. Die Motorleistung kann dabei beliebig gewählt werden.
Aufgabe 3.3 (Roboter mit 2 Motoren)
Erstelle ein Programm, mit dem der Roboter ein Quadrat in der dargestellten Richtung viermal hintereinander abfährt und verwende dabei das repeat-Statement.
Aufgabe 3.4 (Roboter mit 2 Motoren)
Erstelle ein Programm, mit dem der Roboter einen Achter abfährt, der aus zwei Quadraten besteht und verwende dabei zwei Anweisungs-Blöcke, die mit repeat() eingeleitet werden.
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl - it.brgkepler.at Anhang
Programmierung des NXT mit NXC
Aufgabe 4.1 (Roboter mit 2 Motoren und einem Berührungssensor vorne)
Erstelle zwei Programme, mit denen der Roboter auf ein zylindrisches Hinternis (z. B. PET-Flasche) zufährt. Berührt der Roboter das Hindernis, so soll dieser ein Stück zurück und dann das Hindernis so umfahren, dass er danach seinen Weg wie zuvor fortsetzt. Mit dem ersten Programm soll der Roboter ein Ausweischmanöver auf der rechten, mit dem zweiten Programm ein Ausweichmanöver auf der linken Seite des Hindernis fahren ohne dieses zu berühren.
Aufgabe 4.2 (Roboter mit 2 Motoren und einem Berührungssensor vorne)
Erstelle zwei Programme, mit denen der Roboter auf ein rechteckiges (z. B. Ziegel) zufährt. Berührt der Roboter das Hindernis, so soll dieser ein Stück zurück und dann das Hindernis so umfahren, dass er danach seinen Weg wie zuvor fortsetzt (siehe Zeichnung). Mit dem ersten Programm soll der Roboter ein Ausweischmanöver auf der rechten, mit dem zweiten Programm ein Ausweichmanöver auf der linken Seite des Hindernis fahren ohne dieses zu berühren.
Aufgabe 4.3 (Roboter mit 2 Motoren und einem nach untern gerichteten Lichtsensor)
Erstelle ein Programm, mit dem der Roboter auf eine schwarze Linie zusteuert. Erreicht der Lichtsensor die schwarze Linie, so soll der Roboter für zwei Sekunden stehen bleiben. Im Anschluss daran soll dieser wieder vorwärts fahren bis der Sensor die weiße Fläche erreicht. Dort soll der Roboter stehen bleiben. Eine entsprechende Vorlage zum Ausdrucken findet sich am Ende dieses Skriptums.
Aufgabe 4.4 (Roboter mit 2 Motoren und einem nach untern gerichteten Lichtsensor)
Erstelle ein Programm, mit dem der Roboter auf eine schwarze Linie zusteuert, diese ohne anzuhalten überfährt und stehenbleibt, sobald der Lichtsensor nach dem Passieren der schwarzen Linie wieder die weiße Fläche erreicht. Eine entsprechende Vorlage zum Ausdrucken findet sich am Ende dieses Skriptums.
ANGEWANDTE INFORMATIONSTECHNOLOGIE
Dr. Leander Brandl - it.brgkepler.at Anhang
Programmierung des NXT mit NXC
Aufgabe 4.5 (Roboter mit 2 Motoren und einem nach unten gerichteten Lichtsensor)
Erstelle ein Programm, mit dem der Roboter auf einen Bereich mit mehreren, parallelen schwarzen Streifen zufährt. Der Roboter soll, wenn sich der Lichtsensor über einer schwarzen Linie befindet, jeweils für zwei Sekunden anhalten und dann weiterfahren. Hat der Roboter die dritte schwarze Linie erreicht, so soll der dort stehen bleiben. Eine entsprechende Vorlage zum Ausdrucken findet sich am Ende dieses Skriptums.
Aufgabe 4.6 (Roboter mit 2 Motoren und einem nach unten gerichteten Lichtsensor)
Erweitere das Programm aus Aufgabe 4.5 so, dass am Display laufend der aktuelle Wert des Lichtsensors angezeigt wird.