LBotics.at

An den Ausgängen A, B, C und D können die Motoren angeschlossen werden. Bei diesem Beispiel kommt ein einfaches Robotermodell mit zwei Motoren zum Einsatz, die an den Ausgängen A und B angeschlossen sind.

Programmbeispiel - Ansteuern von Motoren

Wird das Programm gestartet, so fährt der Roboter zunächst vier Sekunden mit einer Leistung von 50 Prozent vorwärts, bleibt anschließend für vier Sekunden stehen und fährt dann mit einer Leistung von 70 Prozent für vier Sekunden rückwärts bis er letztendlich stehenbleibt.

#include "evclibrary.h"
 
int main()
{
// 1. Konfiguration der angeschlossenen Sensoren und Motoren
SET_OUT(OUT_A,OUT_MOTOR);
SET_OUT(OUT_B,OUT_MOTOR);
 
// 2. Initialisierung des EV3 Brick
EVC_INIT();
 
// 3. Steuerung des Roboters
WRITE_OUT(OUT_A, MOTOR_POWER, 50);
WRITE_OUT(OUT_B, MOTOR_POWER, 50);
SLEEP(4000);
WRITE_OUT(OUT_A, MOTOR_STOP, MOTOR_COAST);
WRITE_OUT(OUT_B, MOTOR_STOP, MOTOR_COAST);
SLEEP(4000);
WRITE_OUT(OUT_A, MOTOR_POWER, -70);
WRITE_OUT(OUT_B, MOTOR_POWER, -70);
SLEEP(4000);
 
// 4. Programmende
EVC_CLOSE();
return 0;
}

Erklärungen zu diesem Programmbeispiel
Zeile 1: #include "evclibrary.h"

Zu Beginn des Programms wird die EVC-Bibliothek eingebunden.

Zeile 3: int main()

Hier beginnt die Hauptfunktion eines C-Programms. Alle Anweisungen, die zu dieser Funktion gehören, werden in geschwungenen Klammern { } zusammengefasst. Der Programmcode nach einer geschwungenen Klammer auf wird (z. B. zwei Zeichen) eingerückt.

Zeile 6: SET_OUT(OUT_A,OUT_MOTOR);

Mit der Funktion SET_OUT(port, value) wird festgelegt, an welchem Ausgang ein Motor angeschlossen ist. Mit dem ersten Parameter port wird der gewünschte Ausgang angegeben: OUT_A, OUT_B, OUT_C oder OUT_D

Der zweite Parameter value gibt an, dass an dem entsprechenden Ausgang ein Motor angeschlossen ist: OUT_MOTOR

Zeile 10: EVC_INIT();

Initialisierung des Zugriffs auf die Hardware-Komponenten des EV3 Brick.

Zeile 13: WRITE_OUT(OUT_A, MOTOR_POWER, 50);

Die Funktion WRITE_OUT(port, mode, value) dient zum Ansteuern der Ausgänge.

Mit dem ersten Parameter wird der gewünschte Ausgang festgelegt, hier OUT_A.

Der zweite Parameter gibt an, in welchem Modus der Motor betrieben werden soll, hier MOTOR_POWER.

In diesem Modus dreht sich ein Motor mit der vorgegebenen Leistung. Erfährt der Motor einen Widerstand (z. B. ein Hindernis oder beim Hinauffahren einer schiefen Ebene), so bleibt die Leistung konstant. Das bedeutet, dass die Geschwindigkeit mit der sich der Motor letztendlich dreht, geringer wird.

Der dritte Parameter steht für die Leistung mit der sich der Motor drehen soll. Die Werte können zwischen -100 und 100 liegen. Das Vorzeichen bestimmt die Drehrichtung, der Wert bezeichnet eine Leistung zwischen 0% und 100%.

Zeile 15: SLEEP(4000);

Steht an einer Stelle im Programmcode die Funktion SLEEP(), so wird die Ausführung des Programms und somit die Abarbeitung der folgenden Anweisungen an dieser Stelle angehalten. Mit dem Parameter value wird die Zeit in Millisekunden angegeben.

Zeile 16: WRITE_OUT(OUT_A, MOTOR_STOP, MOTOR_COAST);

Wird der Funktion WRITE_OUT(port, mode, value) im zweiten Parameter der Wert MOTOR_STOP übergeben, bleibt der entsprechende Motor stehen.

Mit dem dritten Parameter wird festgelegt, ob der Motor nachläuft (MOTOR_COAST) oder abrupt angehalten werden soll (MOTOR_BRAKE).

Zeile 24: EVC_CLOSE();

Am Ende des Programms muss der Zugriff auf die Hardware-Komponenten des EV3 Brick freigegeben werden. Beim Aufruf dieser Funktion werden auch die Motoren angehalten, falls sich diese am Ende des Programms noch drehen sollten.

Zeile 25: return 0;

Am Ende der Hauptfunktion int main() wird in einem C-Programm der Rückgabewert der Funktion mit dem Schlüsselwort return festgelegt.