Benutzer-Werkzeuge

Webseiten-Werkzeuge




ev3:robotc_grafisch_nl

RobotC grafische Programmierung NL

TC grafische Programmierung – Natural Language(NL)

Die grafische Sprache ist so ausgelegt, dass Lernende schnell und leicht damit arbeiten können. Sie ist eine Entwicklungsumgebung, die anstelle einer Programmiersprache Bausteine verwendet (ähnlich wie Scratch).
grafisch1

Natural Language bietet den Lernenden mehr Kontrolle und nutzt Pseudocode wie

Befehle, bietet aber immer noch grundlegende Syntax-Regeln.


Grafische Programmierung in RobotC Code umwandeln:

Um zu sehen, wie der grafische Code in NL RobotC aussieht, klickt man auf View und dann „Convert Graphical File to Text“


Wie erstellt man ein Programm?

Moving Forward

In diesem Beispiel zeige ich das einfachste von allen Programmen: „Vorwärts fahren“.

Man wählt den „Forward“ Block links aus und zieht diesen, bei gedrückter linken Maustaste, auf die rechte Seite zu dem Startblock mit der „Nummer eins“ (auf der „Bühne“).



Ansteuern des Motors mit Rad-Encoder in:

Grad
Rotationen
oder Zeit in Millisekunden, Sekunden oder Minuten


Der Forward-Block kann drei verschiedene Werte („value“) ansteuern:

Die Dauer - wie viele oder wie viel
Den Dauer Typ - Grad, Drehungen oder Zeit
Der Leistungspegel - wie schnell der Motor drehen soll
Stellen wir die Dauer auf 360 Grad, Typ: Grad (degrees) und die Leistung auf 50:

Anschließend das Programm kompilieren – man wird zum Speichern aufgefordert – und auf den EV3 übertragen.

Hurra! Das erste Programm……
… o.k. - nicht ganz. Schaut man sich den Quelltext in NL an, so stellt man fest, dass die Motoren und Sensoren an bestimmte Ports angeschlossen werden müssen.

#pragma config(Sensor, S1, touchSensor, sensorEV3_Touch)
#pragma config(Sensor, S2, gyroSensor, sensorEV3_Gyro)
#pragma config(Sensor, S3, colorSensor, sensorEV3_Color)
#pragma config(Sensor, S4, sonarSensor, sensorEV3_Ultrasonic)
#pragma config(Motor, motorA, armMotor, tmotorEV3_Large, PIDControl, encoder)
#pragma config(Motor, motorB, rightMotor, tmotorEV3_Large, PIDControl, driveRight, encoder)
#pragma config(Motor, motorC, leftMotor, tmotorEV3_Large, PIDControl, driveLeft, encoder)

*!!Code automatically generated by 'ROBOTC' configuration wizard !!* task main()
{
forward(1, rotations, 50);
}


Beim Starten des Programms drehen sich beide Motoren um 360 Grad.

Schleifen

Der „repeat“ Block ist eine Schleife, der es erlaubt, eine bestimmte Anzahl von Wiederholungen eines Befehls oder einer Befehlskette auzuführen.

In diesem Beispiel bewegt sich der Roboter mit 1 Umdrehung (360 Grad) mit einer Leistung von 50% vorwärts. Diese Umdrehung wird 4 mal wiederholt.

Nun wird das Beispiel um eine Linksdrehung für 2 Sekunden erweitert.


Das gleiche Beispiel mit einer Endlosschleife.

Bewege die Motoren mit einer Leistung von 50% bis der Tastsensor (S1) gedrückt wird.


ACHTUNG!!!

Sollte das Beispiel nicht funktionieren, so kann es daran liegen, dass im Sensor Setup die Bezeichnung anders ist als in dem grafischen Block.

In diesem Fall den Sensor umbenennen.


In diesem Beispiel fährt der Roboter vorwärts bis der Ultraschallsensor ein Hindernis mit weniger als 20 cm Abstand entdeckt - der Roboter fährt zurück für 2 Umdrehungen.



Timing

grafisch23-300x98.jpg

In diesem Beispiel sieht man sehr schön die Vereinfachung in der Programmierung. „Wait“ hat die Werte: Sekunden, Millisekunden und Minuten. Auch die Ansteuerung der Motoren in Einem (setMultipleMotors), sowie das Stoppen auch Einzelner Motoren erleichtert die Programmierung.



<img src="http://vg09.met.vgwort.de/na/bcb2a2b56fa847f896df0441e60808fa" alt="" width="1" height="1" />



ev3/robotc_grafisch_nl.txt · Zuletzt geändert: 2014/12/29 13:47 (Externe Bearbeitung)