blockchain, network, web, digitization, hand, finger, touch, contact, transformation, digital, technology, communication, binary system, transfer, design, programming, program, web design, data, blockchain, finger, programming, programming, programming, programming, programming, web design, web design, web design, web design

Funktionen und Variablen – Übergabe und Rückgabe einfach erklärt


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

BegriffErklärungBeispiel
FunktionZusammenfassung von Befehlen, die mehrfach aufgerufen werden könnenint addieren(int a, int b)
Parameter (Übergabe)Variablen, die an die Funktion übergeben werdena, b in addieren(a,b)
RückgabewertWert, den die Funktion nach der Ausführung zurückliefertreturn summe;
voidSchlüsselwort, wenn die Funktion nichts zurückgibtvoid 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 VariableAußerhalb von Funktionen definiert, überall verfügbarint counter = 0;
Lokale VariableInnerhalb einer Funktion definiert, nur dort gültigint 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?

  1. getTemperature() liest den Sensor ein, rechnet um und gibt die Temperatur zurück.
  2. checkFan(temp, limit) entscheidet anhand des übergebenen Parameters, ob der Lüfter läuft.
  3. 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.

Nach oben scrollen