In diesem Beitrag zeige ich dir die Grundlagen von Funktionen in Arduino-Sketches, wie man Variablen an Funktionen übergibt und wie man Werte zurückbekommt. Außerdem gibt es eine praktische Übersichtstabelle mit den wichtigsten Typen.
Übersichtstabelle: Funktionen und Variablen in Arduino
| Begriff | Erklärung | Beispiel |
|---|---|---|
| Funktion | Zusammenfassung von Befehlen, die mehrfach aufgerufen werden können | int addieren(int a, int b) |
| Parameter (Übergabe) | Variablen, die an die Funktion übergeben werden | a, b in addieren(a,b) |
| Rückgabewert | Wert, den die Funktion nach der Ausführung zurückliefert | return summe; |
| void | Schlüsselwort, wenn die Funktion nichts zurückgibt | void blinkLED() |
| Werte-Übergabe | Übergibt eine Kopie der Variable (Original bleibt unverändert) | addieren(x, y) |
| Referenz-Übergabe | Übergibt die echte Variable (Änderungen wirken sich direkt auf das Original aus) | void tausche(int &a, int &b) |
| Globale Variable | Außerhalb von Funktionen definiert, überall verfügbar | int counter = 0; |
| Lokale Variable | Innerhalb einer Funktion definiert, nur dort gültig | int summe = a + b; |
Erklärung mit Beispielen
1. Eine einfache Funktion ohne Rückgabe
void blinkLED() {
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
👉 Diese Funktion schaltet die eingebaute LED an und aus.
Da kein Wert zurückgegeben wird, steht als Rückgabetyp void.
2. Funktion mit Rückgabewert
int addieren(int a, int b) {
int summe = a + b;
return summe;
}
void setup() {
Serial.begin(9600);
int ergebnis = addieren(3, 7);
Serial.println(ergebnis); // Ausgabe: 10
}
👉 Hier werden Parameter übergeben (a und b), die Funktion berechnet die Summe und gibt sie mit return zurück.
3. Übergabe per Referenz
Manchmal möchte man, dass eine Funktion Variablen direkt verändert:
void tausche(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
void setup() {
Serial.begin(9600);
int x = 5;
int y = 9;
tausche(x, y);
Serial.println(x); // Ausgabe: 9
Serial.println(y); // Ausgabe: 5
}
👉 Durch das & vor den Parametern wird nicht nur eine Kopie, sondern die echte Variable übergeben.
Wann sollte man welche Methode nutzen?
- void-Funktionen: Wenn nur eine Aktion ausgeführt werden soll (z. B. eine LED blinken).
- Rückgabewerte: Wenn man ein Ergebnis weiterverarbeiten möchte (z. B. Berechnungen).
- Referenzen: Wenn man mehrere Werte ändern möchte oder Speicher sparen will.
Funktionen machen deinen Arduino-Code strukturiert, flexibel und wiederverwendbar – ein unverzichtbares Werkzeug für jedes Projekt! 🚀
Perfekt 👍 Dann erweitere ich den Beitrag mit einem Mini-Projekt, das zeigt, wie man Funktionen mit Rückgabewert und Übergabe sinnvoll in der Praxis nutzt.
Praxisbeispiel: Temperaturmessung mit Rückgabewert
Angenommen, du möchtest die Temperatur von einem Sensor (z. B. LM35 oder TMP36) einlesen und daraus entscheiden, ob ein Lüfter eingeschaltet werden soll.
Schaltung (einfaches Beispiel)
- LM35 an A0 (Ausgangssignal)
- VCC → 5V
- GND → GND
- Lüfter/LED an Pin 8
Arduino-Code
// Pin-Definitionen
const int sensorPin = A0;
const int fanPin = 8;
// Funktion: Temperatur berechnen und zurückgeben
float getTemperature() {
int rawValue = analogRead(sensorPin); // Rohwert (0–1023)
float voltage = (rawValue / 1023.0) * 5.0; // in Volt umrechnen
float temperature = voltage * 100.0; // LM35: 10mV pro °C
return temperature; // Rückgabe
}
// Funktion: Lüfter einschalten, wenn Temperatur > Grenze
void checkFan(float temp, float limit) {
if (temp > limit) {
digitalWrite(fanPin, HIGH);
} else {
digitalWrite(fanPin, LOW);
}
}
void setup() {
Serial.begin(9600);
pinMode(fanPin, OUTPUT);
}
void loop() {
float currentTemp = getTemperature(); // Rückgabewert abholen
Serial.print("Aktuelle Temperatur: ");
Serial.println(currentTemp);
checkFan(currentTemp, 30.0); // Parameter übergeben
delay(1000); // kleine Pause
}Was passiert hier?
getTemperature()liest den Sensor ein, rechnet um und gibt die Temperatur zurück.checkFan(temp, limit)entscheidet anhand des übergebenen Parameters, ob der Lüfter läuft.- Der Code ist klar getrennt: Berechnung und Logik sind nicht vermischt.
Vorteile
✅ Wiederverwendbar – die Temperaturfunktion kann auch für andere Projekte genutzt werden.
✅ Übersichtlich – Logik und Berechnung sind getrennt.
✅ Flexibel – die Schaltgrenze kann leicht angepasst werden.



