Funktion


Bastelseite Display + Antriebe Sensoren C++


Funktion 1

Funktionen sind kleinere Programmteile, z.B. für wiederkehrende Befehle, die dann mehrmals aufgerufen werden können. In anderen Programmiersprachen sind diese auch als "Unterprogramme" bekannt.

Nehmen wir als beispiel eine Blinkfunktion einer LED am Pin 5. Im Setup wird dieses bereits deklariert. Wenn die LEED dan einmal aufleuchten soll, wird einfach die Funktion mittels void ledblink (); aufgerufen. Der Name der Funktion ist frei wählbar.

void ledblink() {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}

Hier wird der laufende Sketch unterbrochen und zur Funktion "void ledblink" verzweigt. Nach Abarbeitung der Funktion kehrt der Sketch an die zuvor verzweigte Stelle wieder zurück und arbeitet ab da weiter.

Die Funktion hat nur die Aufgabe: den ledPin auf HIGH schalten, eine Sekunde warten, ledPin zurück auf LOW schalten, nochmals eine Sekunde warten um dann zurückzukehren.


Funktion 2 mit Übergabe von Werten

Interessanterweise lassen sich auch noch Werte an die Funktion übergeben: void ledlicht (5, 2000, 1000); . Nennen wir die neue Funktion einfach "ledlicht". In den Klammern stehen nun ein paar Zahlen, die Werte darstellen. Achtung: es können nur die Werte selbst, nicht die Variablennamen weitergegeben werden!
Die erste Zahl ist "5" = der Pin der LED. "2000" als zweiter Wert soll die Einschaltzeit bestimmen, sowie "1000" die Ausschaltzeit.

void ledlicht(int ledPin, int einzeit, int auszeit) {
digitalWrite(ledPin, HIGH);
delay(einzeit);
digitalWrite(ledPin, LOW);
delay(auszeit);
}

Jetzt schaltet die Funktion den "ledPin" des Ausgangs auf "HIGH" und nach der Zeitangabe von "einzeit" wieder auf "LOW". Nun wird die "auszeit" noch abgewartet um wieder zurück zukehren.

Der große Vorteil ist jetzt die variable Eingabe: es können von verschiedenen Punkten des Sketches die Funktion mit unterschiedlichen Werten aufgerufen werden.
Es lassen sich sogar andere LEDs, als Beispiel die LEDs an Pin 7 oder 9, schalten: void ledblink2 (7, 1000, 5000); oder void ledblink2 (9, 500, 500);



Funktion 3 mit Rückgabe vom Wert

Genauso gut läßt sich eine Variable zurück geben. Der Unterschied ist nun der Name: "float".
Der Funktionsname "quadratur" ist nun auch der Name der zurückgebenden Variable. "y" ist noch der übergebende Wert.

float quadratur (float y) {
float ergebnis = y*y;
return ergebnis;
}

Das Ganze wird nun mit wertneu = quadratur(7); aufgerufen. "quadratur" ruft die "float"-Funktion auf und übergibt den Wert "7" an "y".
jetzt wird das "ergebnis" aus der Multiplikation von "y" mit "y" selbst erstellt und mittels "return" zurück gegeben.
Da "quadratur(7)" als Aufruf galt und gleichgestellt ist mit "wertneu" wird es an diesen weitergegeben = "wertneu" ist nun "49"!




brixelweb.de